生成器(generator):
生成器本质就是迭代器
创建生成器的两种方案:
1.生成器函数
2.生成器表达函数
生成器函数
生成器函数有一个关键字yieid yield只有执行到next的时候才会返回
生成器函数执行的时候,并不会执行函数,得到的是生成器
def func():
print(111241312)
yield 999 #yield也有返回的意思
ret = func()
print(ret.__next__()) #yield只有执行到next的时候才会返回
//terminal
111241312
999
yield关键字:只要出现了yield关键字,他就是一个生成器函数
作用:①返回数据
② 可以分段执行函数中的内容
def func():
print(11111)
yield 999 #yield也有返回的意思
print(22222)
yield 888
print(3333)
yield 777
ret = func()
print(ret.__next__()) #yield只有执行到next的时候才会返回
print(ret.__next__())
//termianl
11111
999
22222
888
推导式
简化代码
语法:
列表推导式:[ 数据 for循环 if判断 ]
集合推导式:{ 数据 for循环 if判断 }
字典推导式 :{ k:v for循环 if判断 }
list = []
for i in range(10):
list.append(i)
print(list)
lis = [i for i in range(10)] #列表推导式
print(lis)
生成偶数
lis = []
lis = [i for i in range(10) if i % 2 == 0] #生成偶数
print(lis)
//terminal
[0, 2, 4, 6, 8]
小写转大写
lis = ["cba","nba","edg","drx","fpx"]
lis2 = [item.upper() for item in lis if item == "edg"] #生成大写
print(lis2)
//terminal
['EDG']
列表改为字典:
lst = ['华为','丁真','战狼','吴京','谷爱凌','冬奥会']
dic = {i:lst[i] for i in range(len(lst))}
print(dic)
//terminal
{0: '华为', 1: '丁真', 2: '战狼', 3: '吴京', 4: '谷爱凌', 5: '冬奥会'}
生成器表达式
生成器表达式
语法:(数据 for循环 if)
s = "周杰伦"
s2 = list(s)
print(s)
print(s2)
//treminal
周杰伦
['周', '杰', '伦']