最佳答案
Python 提供了一个很好的方法来获取渴望迭代的 len(x)
的长度,即。但是我找不到任何类似于由生成器理解和函数表示的惰性迭代的东西。当然,写下这样的东西并不难:
def iterlen(x):
n = 0
try:
while True:
next(x)
n += 1
except StopIteration: pass
return n
但我无法摆脱一种感觉,那就是我正在重新实现一辆自行车。
(当我在输入函数时,一个想法闪过我的脑海: 也许真的没有这样的函数,因为它“破坏”了它的参数。不过对我的案子来说不是问题)。
附注: 关于第一个答案——是的,类似 len(list(x))
的东西也可以,但是这会大大增加内存的使用。
附注: 重新检查... 无视附注,似乎我在尝试时犯了一个错误,它工作正常。对不起,麻烦了。