我有一个惰性迭代器/生成器a
,它在每次迭代时进行一些副作用,我不在乎它产生的值。最常见的评估副作用的方式是什么?当然,我可以简单地执行以下操作:
for _ in a: pass
但是它看起来相当丑陋。
我有一个惰性迭代器/生成器a
,它在每次迭代时进行一些副作用,我不在乎它产生的值。最常见的评估副作用的方式是什么?当然,我可以简单地执行以下操作:
for _ in a: pass
但是它看起来相当丑陋。
我在itertools recipes章节中找到了consume()
函数的配方。基本上,它建议采取以下步骤:
collections.deque(iterator, maxlen=0)
map()
;正确的转换是使用普通的for循环(因为创建一个列表只会浪费资源)" * - jonrsharpeall(a)
。如果它始终产生假值:any(a)
。 - jasonharperfilter(lambda x: None, iterator)
,但它仍然必须在每个项目上调用该lambda函数,并且调用Python函数不是特别快的(因为每个调用都必须创建执行帧对象),因此这会对仅需要迭代可迭代项的内容施加额外的开销。 - PM 2Ring