生成器
生成器是特殊的迭代器
通过yield凭空生成元素
生成器其实是一个有yield语句的函数,定义一个生成器函数 ,返回的是一个生成器对象,可迭代
每执行一次yield生成一个元素
- 特点:节约空间,但时间复杂度高
- 不是一次性将所有元素全部生成,而是按需一个个地生成,值占用一个元素的内存空间,即生成器本身
range()函数也是一个生成器,每次需要range里的一个数据时才会临时去产生它。所以如果要让range函数返回列表,必须明确指明list(range())
生成器定义
1、生成器函数,有yield语句的函数
def mygenerator(s):
for i in s:
yield i*2
for i in mygenerator('hello'):
print