qed*_*qed 2 python list-comprehension generator generator-expression
我有这样的事情:
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
Run Code Online (Sandbox Code Playgroud)
使用生成器是为了避免将整个文件读入内存,但有时读取整个文件正是所需的(即列表理解).如果没有太多额外的代码,我怎么能改变这种行为呢?目标是能够在这两种模式之间进行选择.我听说python有一些叫做描述符的功能,它可以用来修改函数而不需要触及函数的主体,在这种情况下它是否合适?如果是的话,应该如何在这里使用?
只需调用list()生成器即可实现您需要实现的结果:
gen = TransMach(mfile, sfile)
lines = list(gen)
Run Code Online (Sandbox Code Playgroud)