python - python中的枚举是懒惰的吗?

标签 python iterator generator enumerate

我想知道当我将生成器函数的结果传递给 python 的 enumerate() 时会发生什么。示例:

def veryBigHello():
    i = 0
    while i < 10000000:
        i += 1
        yield "hello"

numbered = enumerate(veryBigHello())
for i, word in numbered:
    print i, word
    

枚举是懒惰地迭代,还是将所有内容都放入<enumerate object>第一的?我 99.999% 确定它是惰性的,所以我可以将它与生成器函数完全相同,还是我需要注意什么?

最佳答案

懒惰。证明是这样的相当容易:

>>> def abc():
...     letters = ['a','b','c']
...     for letter in letters:
...         print letter
...         yield letter
...
>>> numbered = enumerate(abc())
>>> for i, word in numbered:
...     print i, word
...
a
0 a
b
1 b
c
2 c

关于python - python中的枚举是懒惰的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396279/

相关文章:

python - 如何将坐标从列表同时传递到多个步进电机,而不是按顺序?

python - 如何打印每个列表的第一个字符,然后打印下一个字符

python - 为什么从数组转换为图像时会发生位移?

python - Python 中的类继承

c++ - 在 C++ 11 中迭代 STL 类

python - 如何对位置参数为零的函数使用 Python 多重处理?

Python:如何将生成器迭代值附加到列表

angularjs - 从 generator-gulp-angular 全栈生成的端点中删除一些文件

python - 在没有模板的情况下对 POST 进行 Flask 适当响应?

java - (java) 无法应用迭代器中的删除