发电机输出的长度
Python提供了一种很好的方法来获取渴望的迭代的长度len(x)
。但是对于以生成器理解和函数表示的惰性可迭代对象,我找不到类似的东西。当然,编写类似以下内容并不难:
def iterlen(x):
n = 0
try:
while True:
next(x)
n += 1
except StopIteration: pass
return n
但是我无法摆脱自己重新设计自行车的感觉。
(当我键入函数时,我想到了一个想法:也许确实没有这样的函数,因为它“破坏了”其参数。不过,对于我的情况而言,这不是问题)。
PS:关于第一个答案-是的,类似的方法len(list(x))
也可以工作,但是会大大增加内存的使用率。
PPS:重新检查…忽略PS,似乎我在尝试时出错,它可以正常工作。抱歉,添麻烦了。