如何迭代生成器?
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
假设有一个大列表,我想对其进行迭代。
>>> 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