三元表达式、列表字典生成式、匿名函数

三元表达式

通常我们写只有两种情况的判断语句会是这样,

num = input('请输入纯数字>>>:')
if num.isdigit():
	num = int(num)
else:
	num = 0

如果只是这种简单的逻辑我们可以使用三元表达式,

num = input('请输入纯数字>>>:')
num = int(num) if num.isdigit() else 0
print(num)

列表、字典生成式

python提供了快速生成列表的表达式使我们不再一味需要for循环操作。

# 将以下列表中数字平方后得到新列表
l1 = [1,2,3,4,5]
l2 = [i**2 for i in l1]
print(l2)  # [1,4,9,16,25]
# 如果列表中含有字符串,排除字符串可以在forin后加入if判断,注意:语法中不能使用else
l3 = [1,'xie',2,3,'san',4,5]
l4 = [i**2 for i in l3 if type(i) == int]
print(l4)  # [1,4,9,16,25]

# 字典同列表类似,字典的key需要enumerate将列表传化成枚举从而得到索引
l5 = ['xie','san','lin','yastil']
dic = {i:j for i,j in enumerate(l5)}
print(dic)  # {0: 'xie', 1: 'san', 2: 'lin', 3: 'yastil'}

匿名函数

简单的函数可以用匿名函数表达,如 lambda x:x+1。一般地,匿名函数会搭配其他函数一起使用。

# 如下map映射函数中匿名函数就把列表l中每个元素都做了平方处理
l = [1,2,3,4]
l2 = list(map(lambda x:x**2,l))
print(l2)  # [1, 4, 9, 16, 25]

# 列表sort方法中的匿名函数
user_list = [
    {'name':'xie','age':12},
    {'name':'san','age':14},
    {'name':'lin','age':8},
    {'name':'cystal','age':7}
]

l.sort(key=lambda user:user.get('age'))  # 根据user的age排序
print(l)
# [{'name': 'cystal', 'age': 7}, {'name': 'lin', 'age': 8}, {'name': 'xie', 'age': 12}, {'name': 'san', 'age': 14}]
posted @ 2021-11-18 15:48  它叫鸮  阅读(39)  评论(0编辑  收藏  举报