欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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函数中运用方式和它的简化方式一模一样 。