Легкий способ изменить генератор в понимание списка без дублирования кода в 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() на генераторе преобразует его в обычный список.

Interesting Posts

Python: подключение wx.py.shell.Shell к отдельному процессу

Могу ли я выполнить предварительную аутентификацию с помощью httplib2?

Как связать клавишу Enter с кнопкой в ​​Tkinter

Как сопоставить смайлик в предложении с регулярными выражениями

Можно ли программно построить кадр стека Python и начать выполнение в произвольной точке кода?

Как вытащить случайную запись с помощью ORM Django?

Путь Python в .bash_profile не соблюдается

Возвращает элементы из списка в функции. Python

Почему (1 в == Истина) оценивается в False?

Текстовая игра Python: как сделать функцию сохранения?

Проблема с многопоточным подключением к приложениям и сокетам Python

Выполнение исполняемого скрипта Python

Быстро и эффективно вычислять собственный вектор для известного собственного значения

Преобразование входных данных для ALS в pyspark

Ошибка PyCharm: «Нет модуля» при попытке импортировать собственный модуль (скрипт python)

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