如何迭代生成器?

How to iterate over a generator?

假设有一个大列表,我想对其进行迭代。

>>> x=[]
>>> for i in x:
print(x)

但是因为列表太大,使用生成器是最好的方法:

>>> g=(i for i in range(10))
>>> g.__next__()
0

但是迭代次数有问题。 因为我不知道应该使用多少次g.__next__(),所以我需要更动态的东西

例如:

for i in x:

作为迭代到结束的循环,x 的长度并不重要。

如何使用生成器进行类似的迭代?

使用 for 循环,就像您在 list 中使用的一样,示例 -

for i in g:
    print(i)

您可以对生成器使用 for 语法:

>>> g=(i for i in range(10))
>>> g
<generator object <genexpr> at 0x7fd70d42b0f0>
>>> for i in g:
...     print i
... 
0
1
2
3
4
5
6
7
8
9