一个人可以考虑函数
def f(iterator):
count = 0
for _ in iterator:
count += 1
return count
def g(iterator):
return len(tuple(iterator))
i 相信他们能区别的唯一方法是, g
可能会用尽内存,而 f
却没有。
假设我对此是对的:
是否有更快和/或以其他方式的速度(粗略,更短而不变成代码高尔夫) 使用少于
tuple(iterator)
的内存时获得f(iterator)
的方法, 最好是内联而不是作为函数?
(如果f
还有其他方法,g
有所不同,那么我相信 f
比g
更有可能正确定义我追求的功能。我已经查看了Itertools文档页面,在那里看不到任何解决方案。)
您可以使用 sum
与发电机表达式使用迭代器中的每个项目的1:
>>> it = (i for i in range(4))
>>> sum(1 for _ in it)
4