遍历列表而不创建不需要的对象

2024-04-20 00:10:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我通常这样做:

[worker.do_work() for worker in workers]

这样做的好处是可读性很强,并且包含在一行中,但是创建一个我不需要的对象(列表)的问题,这意味着垃圾回收会被不必要地触发。你知道吗

显而易见的选择是:

for worker in workers:
    worker.do_work()

也相当可读,但使用两行。你知道吗

有没有一个单一的方法来实现相同的结果,而不创建不必要的对象?你知道吗


Tags: 对象方法in列表fordo垃圾work
2条回答

python中的“GC”与java有很大的不同。ref count减量比mark和sweep便宜得多。对其进行基准测试,然后决定是否过于强调小成本。你知道吗

要使它成为一个单行程序,只需定义一个helper函数,然后就可以用一行代码来调用它。如果方便的话,将函数放入导入的库中。你知道吗

当然有。你知道吗

def doLotsOfWork(wks):
    for w in wks:
        w.do_work()

现在,你的“一行”:

doLotsOfWork(workers)

简而言之,除了使用for循环之外,没有“更短”(或更好的方法)。我建议你不要使用列表理解,因为它使用副作用-这是代码气味。你知道吗

相关问题 更多 >