三元表达式+列表生成器+字典生成器——day13

时间:2022-12-23 23:31:07

1.三元表达式 (代替 if else 循环 不等添加 elif)
res='OK' if False else 'No'
print(res)


2.列表生成式 (代替for循环 取出列表里面的值 )
l=[i**2 for i in range(10) if i > 4] 取出的值可以运算 只能添加 if
print(l)

例 取出列表中带 sb得值
names=['egon','alex_sb','kevin_sb','hxx_sb','cxx_sb']
sbs=[]
for name in names:
if name.endswith('sb'):
sbs.append(name)

sbs=[name.upper() for name in names if name.endswith('sb')]
可以在 name中添加功能


3.字典生成式
res={i:i**2 for i in range(10) if i > 3}
print(res)

print({i for i in 'hello'})
结果:
{4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
{'e', 'l', 'o', 'h'}


匿名函数 :lambda
定义:匿名函数就是定义了一个函数的内存地址,主要用于临时使用一次的场景

func=lambda x,y:x+y
print(func(1,2))

res=(lambda x,y:x+y)(1,2)
print(res)

salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}

def func(k):
return salaries[k]
print(max(salaries,key=lambda k:salaries[k]))————用临时函数返回取出的值

print(sorted(salaries,key=lambda k:salaries[k],reverse=True))————rexerse=Tuer控制排序从小到大
——————————key(代表比较依据)
结果:['alex', 'wupeiqi', 'egon', 'yuanhao']