python if elif else 的简化写法(用在列表、字典推导式以及lambda函数中)

  最近写程序经常需要在列表推导式中添加判断条件,有时候在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函数中运用方式和它的简化方式一模一样 。

 

 

 

 

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值