python if elif else 的简化写法(用在列表、字典推导式以及lambda函数中)
程序员文章站
2022-03-09 18:20:38
...
最近写程序经常需要在列表推导式中添加判断条件,有时候在lambda匿名函数中添加判断条件,或者有时候写程序写的太长了,需要判断语句的时候不想在写成多行了(显得很啰嗦),这些时候用了一下if elif else的简化用法(这个时候可读性就差),现在我总结一下这个用法:
1、if elif else的一行写法
一般写法:
a = 5
if a <10:
print('小于10')
elif a<20:
print('大于10小于20')
elif a<30:
print('大于20小30')
else:
print('大于30')
小于10
简化写法:
a = 5
print('小于10') if a<10 else print('大于10小于20') if a<20 else print('大于20小于30') if a< 30 else print('大于30')
小于10
简化语句的写法总是把if 语句下一句总写在 if语句之前。
2、简化写法在列表推导式中的运用
用到列表推导式的时候,如果加条件必须用到简化写法:
一般写法:
a = ['female:小小红','female:小小丽','female:小小花','male:小小周','male:小小飞','male:小小文']
b = []
for i in a:
if i[:6] == 'female':
b.append(i)
else:
b.append((i[-4:] + '不是女士'))
b
['female:小小红', 'female:小小丽', 'female:小小花', ':小小周不是女士', ':小小飞不是女士', ':小小文不是女士']
用在列表式中的简化写法:
a = ['female:小小红','female:小小丽','female:小小花','male:小小周','male:小小飞','male:小小文']
[i if i[:6] == 'female' else (i[-4:] + '不是女士') for i in a]
['female:小小红', 'female:小小丽', 'female:小小花', ':小小周不是女士', ':小小飞不是女士', ':小小文不是女士']
用了列表推导式和if else的简化写法是不是简单了很多!
另外,列表推导式中的只加一个if 语句和用if else语句时if的位置不太一样:
[i for i in range(10) if i%2 == 0]
[0, 2, 4, 6, 8]
3、简化写法在lambda匿名函数中的运用
list(map(lambda x:x if x%2 == 0 else x+1000 if x == 3 else x+1,[i for i in range(20)]))
[0, 2, 2, 1003, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20]
if elif else 在lambda函数中运用方式和它的简化方式一模一样 。
下一篇: 将EditPlus添加到右键菜单