Если вам нужно сделать это для многих строк, вы можете распаковать генератор, который преобразует все ваши строки в качестве аргументов в zip
, который затем будет выдавать tuple
первых элементов каждого строка, затем tuple
элементов второй строки и т. д. c.
a, b, c = zip(*(map(int, line.split()) for line in f if line.strip()))
По существу, zip
преобразует группу итераторов, которые производят "строки", в один итератор, который производит «колонны». Разделенная версия будет выглядеть так:
rows = (map(int, line.split()) for line in f if line.strip())
columns = zip(*rows)
a, b, c = columns
Если вы хотите, чтобы результат был list
, а не tuple
, вы можете дополнительно обернуть его в:
a, b, c = map(list, zip(*(map(int, line.split()) for line in f if line.strip())))
это становится довольно плотным в этой точке.