1.生成器:本质是迭代器
生成器函数:函数中带有yield. 在执行的时候返回生成器,而不是执行函数
yield和return相似,不过当执行到yield时暂停,下次执行时从yield下面继续,而不是退出执行
只有当执行到__next__()和send()时函数才开始执行
send():可以给上一个yield传值,也可以实现__next__()的功能
send()不能用在开头,不能给最后一个yield传值,__next__()可以用在开头
特点: 节省内存 惰性机制 只能向后,不能反复
2.推导式
列表推导式: lst =[结果 for循环 if筛选]
字典推导式: dic ={key:value for循环 if 筛选}
集合推导式: set ={key for循环 if筛选}
3.生成器表达式
(结果 for循环 if筛选)
使用生产器表达式直接得到生成器
列表推导式:一次把所有的数据创建出来,容易产生内存浪费
生成器表达式:记录下代码,需要的时候在生成器执行代码 效率高