计算迭代剂的收益率数



一个人可以考虑函数

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有所不同,那么我相信 fg更有可能正确定义我追求的功能。我已经查看了Itertools文档页面,在那里看不到任何解决方案。)

您可以使用 sum与发电机表达式使用迭代器中的每个项目的1:

中的每个项目。
>>> it = (i for i in range(4))
>>> sum(1 for _ in it)
4

最新更新