一、生成器
1、自己用python代码写的迭代器,生成器的本质就是迭代器
2、def fun():
print(111)
yield 'aa'
print(222)
y = fun() #生成器函数的对象
print(y.__next__) #111,aa __next__取值
3、yield不会结束函数,一个next对应一个yield,yield将值返回给对象
4、生成器直接创建,不需要转化,从本质就节省内存
5、send yield
send与next一样,也是对生成器取值(执行一个yield方法)
send可以给上一个yield传值
第一次取值永远是next
最后一个yield永远也得不到send传的值
二、列表推导式
1、循环模式
l = [i for i in range(100)]
2、筛选模式
l2 = [i for i in range(100) if i %2==0]
3、优点:一行解决,方便
缺点:不易排错,不能超过三次循环
4、生成器表达式
将列表推导式[]换成()即可
5、字典推导式
dic = ['a':10,'b':20]
ite = (dic[k]:k for k in dic)