推导式和生成器
一、三元表达式
也叫三目表达式
x = 10
y = 20
if x > y:
print(x)
else:
print(y)
# 上下相等
print(x) if x > y else print(y)
二、列表推导式
lt = []
for i in range(10):
lt.append(i)
# 比较麻烦,因此有了下面
lt = [i for i in range(10)] # 这就是列表推导式
# 效果一样,而且i可以做运算
lt = [i**2 for i in range(10)]
三、字典生成式
和列表生成式差不多:
dic = {i:i**2 for i in range(10)}
zip方法
通过解压缩函数生成一个字典
lt1 = ['a', 'b', 'c']
lt2 = [1, 2, 3]
dic = {k: v ** 2 for k, v in zip(lt1, lt2)}
print(dic)
四、生成器表达式
把列表推导式的[]换成()就是生成器表达式
g = (i for i in range(100))
print(g)
for i in g:
print(i)
五、生成器
生成器:含有yield关键字的函数叫做生成器
def ge():
yield 3 # 一个yield相当于一个next; yield可以暂停函数
yield 4
# ge是一个函数对象,但是个ge()就得到了一个生成器,它的本质是一个迭代器
g = ge() # 得到了一个生成器
yield的特性
- 暂停函数
- 通过next取值