生成器\生成器表达式\推导式
13.生成器和生成器表达式
一.生成器
生成器的本质就是迭代器,python通过三种方式获取生成器
1.通过生成器函数
def fun(): # print("111") yield 222 yield 333 g=fun() c=g.__next__() print(c)
2.通过各种推导式来实现生成器
g=for (i for i in range(10)) for el in g: print(el)
生成器可以用for循环来获取内部元素
3.通过数据的转换也可以获取生成器
二 send和__next()的区别
1.send和__next__()都是让生成器向下走一次
2.send可以给上一个yield的位置传递值,不能给最够一个yield发送值,在第一次执行生成器代码时不能用send()
三.列表推导式
lst=[i for i in range(1,15)) print(lst)
生成器表达式和列表推导式的区别:
1.列表推导式比较耗内存,一次性加载,生成器表达式几乎不占用内存,使用的时候才分配和使用内存
2.得到的值不一样,列表推导式得到的是一个列表,声称其表达式得到的是一个生成器
ps:生成器,只有要值的时候才拿值