Легкий способ изменить генератор в понимание списка без дублирования кода в python?

У меня есть что-то вроде этого:

class TransMach: def __init__(self, machfile, snpfile): self.machfile = machfile self.snpfile = snpfile def __translines(self): fobj = open(self.machfile) lines = (l.strip().split()[2] for l in fobj) tlines = zip(*lines) return tlines 

Генератор используется во избежание чтения всего файла в память, но иногда чтение всего файла – именно то, что желательно (т.е. понимание списка). Как я могу изменить такое поведение без лишнего кода? Цель состоит в том, чтобы иметь возможность выбирать между этими двумя режимами. Я слышал, что у python есть функция, называемая дескриптором, которая может использоваться для модифицированных функций, не касаясь тела функции, подходит ли это в этом случае? Если да, то как его использовать здесь?

2 Solutions collect form web for “Легкий способ изменить генератор в понимание списка без дублирования кода в python?”

Просто list() в генераторе для тех случаев, когда вам нужен результат:

 gen = TransMach(mfile, sfile) lines = list(gen) 

Вызывающий list() на генераторе преобразует его в обычный список.

Python - лучший язык программирования в мире.