生成器\生成器表达式\推导式

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:生成器,只有要值的时候才拿值

posted @ 2018-07-18 17:01  浮云遮月  阅读(152)  评论(0编辑  收藏  举报