将生成器更改为列表理解的简单方法,而无需在 python 中重复代码?

2024-01-03

我有这样的事情:

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有一些称为描述符的功能,可以用来修改函数而不触及函数体,它适合这种情况吗?如果是的话,这里应该如何使用呢?


只需致电list()在生成器上,您需要将结果具体化:

gen = TransMach(mfile, sfile)
lines = list(gen)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将生成器更改为列表理解的简单方法,而无需在 python 中重复代码? 的相关文章

随机推荐