可以考虑一下功能
def f(iterator):
count = 0
for _ in iterator:
count += 1
return count
def g(iterator):
return len(tuple(iterator))
我相信它们唯一的不同之处是g
可能会耗尽内存,而f
则不会。
假设我是对的:
Is there a faster and/or otherwise-better (roughly, shorter without becoming code-golf) way to get
f(iterator)
while using less memory thantuple(iterator)
takes up, preferably inline rather than as a function?
(如果f
、g
有其他方式不同,那么我相信
f
比 g
更有可能正确定义我所追求的功能。
我已经看过the itertools documentation page ,并且没有看到任何解决方案。)
最佳答案
您可以将 sum
与生成器表达式结合使用,为迭代器中的每个项目生成 1:
>>> it = (i for i in range(4))
>>> sum(1 for _ in it)
4
关于python - 计算迭代器的产量数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41339230/