Python的生成器是其有魅力的地方之一,它的好处是不用一开始就生成一大堆的数据,而是在需要的时候才计算出数据,我们首先先来看一下怎样创建一个生成器
创建生成器很简单,我们来看第一种
x = (i for i in range(11))
看一下是不是很简单,看起来是不是很熟悉,怎么像是列表生成式,是的,但是需要把最外面的中括号【】换成小括号()就可以了,而且这个时候,如果我们在来打印x,在控制台里会输出这么一句话
<generator object <genexpr> at 0x0000000002801A40>
大家看到generator这个词了吗,此时x就变成了生成器,那怎么看生成器里的数据呢,很简单直接用for遍历即可
x = (i for i in range(11))
for j in x:
print(j)
既然是生成器那它就有自己独特的访问方式,那就是next()函数,而列表是不能的
x = (i for i in range(11))
print(next(x))
print(next(x))
大家发现没,通过next()每次生成一个数据,这样就不会想列表一样一下子列出整个数列在内存中