生成器进阶

Send

首先:send和next工作得起步位置是完全相同得

      Send可以吧一个值作为信号量传递到函数中去

      在生成器执行伊始,只能先用next

      只要要用send传递参数得时候,必须在生成器中还有一个未被返回得yield

 

列表表达式==列表推导式   #简化你得代码

Print([i*I for i in [1,3,5]])   #结果必须是一个列表

生成器表达式  节省内存。简化代码

Laomuji=(‘egg%d’%i for I in range(10))

    Print(laomuji)

三种方法从生成器中取值

1.     A__next__()

2.     For

For  I   in  a:

Print(i)

3.      List 强转

Print(list(a))

集合推导式有自动去重功能

l=[-1,1,2,3,4,5]
print([i*i for i in l])
print({i*i for i in l})

 

列表推导式[] – 生成器表达式()

尽量让推导式简化你得操作,增强代码得可读性

如果推导式过于复杂了,应该转换成普通得python代码

所有得列表推导式都可以转换成生成器表达式,并且应该在代码中尽可能多使用生成器表达式而不是列表推导式

posted @ 2017-09-05 19:31  敌说  阅读(90)  评论(0编辑  收藏  举报