在一些用例中,我需要运行生成器函数而不关心生成的项。
我不能使它们成为非泛型函数,因为在其他用例中,我肯定需要生成的值。在
我目前正在使用一个简单的自制函数来耗尽发电机的能量。在
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())
你很难想象你会很难根据你的表现来创建案例。在
此外,表创建将比迭代花费更多。在
因此,您已经拥有的for循环看起来是最简单、最具python风格的解决方案——在本例中。在
为此设置for循环可能相对昂贵,请记住,Python中的for循环基本上是简单赋值语句的连续执行;您将执行n(生成器中的项数)赋值,但随后会丢弃赋值目标。在
相反,您可以将生成器提供给零长度
deque
;它以C速度消耗并且不会像list
和其他实现迭代器/生成器的可调用项那样使用内存:取自
consume
itertools配方。相关问题 更多 >
编程相关推荐