一、描述
生成器(generator)是为了解决列表生成式占用内存的缺陷,只存储列表的生成算法。我们可以根据需要取列表的值,而不是像列表生成式一样全部存在内存当中。
二、用法
1)生成
只需要把列表生成式的 [] 换成()
In [17]: [x*2 for x in range(0,10)]
Out[17]: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
In [18]: (x*2 for x in range(0,10))
Out[18]: <generator object <genexpr> at 0x1026db468>
我们可以看到 生成器不会直接显示出成员
2)访问成员
a).next()
In [19]: G = (x*2 for x in range(0,10))
In [20]: next(G)
Out[20]: 0
In [21]: next(G)
Out[21]: 2
In [22]: next(G)
Out[22]: 4
In [23]: next(G)
这种方法在实际中是不常用的,太麻烦
b) 迭代
In [30]: G = (x*2 for x in range(0,10))
In [31]: for i in G:
...: print(i)
...:
0
2
4
6
8
10
12
14
16
18