运行生成器函数而不关心项目的简单方法

2024-06-02 05:54:34 发布

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

在一些用例中,我需要运行生成器函数而不关心生成的项。
我不能使它们成为非泛型函数,因为在其他用例中,我肯定需要生成的值。在

我目前正在使用一个简单的自制函数来耗尽发电机的能量。在

def exhaust(generator):
     for _ in generator:
         pass

我想知道,是否有一种更简单的方法可以做到这一点,而我却错过了这一点?在

编辑 遵循用例:

^{pr2}$

在某些情况下,我关心的是错误和成功的价值

for success, table in create_tables():
    if success:
        print('Creation of table {} succeeded.'.format(table))
    else:
        print('Creation of table {} failed.'.format(table), file=stderr)

…在某些情况下,我只想“盲目地”运行函数:

exhaust(create_tables())

Tags: of函数infortablescreatetable情况
2条回答

你很难想象你会很难根据你的表现来创建案例。在

此外,表创建将比迭代花费更多。在

因此,您已经拥有的for循环看起来是最简单、最具python风格的解决方案——在本例中。在

为此设置for循环可能相对昂贵,请记住,Python中的for循环基本上是简单赋值语句的连续执行;您将执行n(生成器中的项数)赋值,但随后会丢弃赋值目标。在

相反,您可以将生成器提供给零长度deque;它以C速度消耗并且不会像list和其他实现迭代器/生成器的可调用项那样使用内存:

from collections import deque

def exhaust(generator):
    deque(generator, maxlen=0)

取自consumeitertools配方。

相关问题 更多 >