python中的常见语法糖汇总(列表推导式、三元运算、lambda函数)
语法糖
- 计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会
1. 三元运算
-
python的三元运算是为了简化if判断语句,把满足条件执行的语句放在了if前面
a = 3 if a > 5: print(True) else: print(False) #利用三元运算可简化为 print(True) if a > 5 else print(False)
2. lambda函数(匿名函数)
- 在Python中,我们使用lambda关键字来声明一个匿名函数,这就是为什么我们将它们称为“lambda函数”。匿名函数是指没有声明函数名称的函数。尽管它们在语法上看起来不同,
- lambda函数只能包含一个表达式,只能封装有限的逻辑
#ambda的语法形式如下:lambda arg1, arg2, …, argN : expression
sum = lambda arg1, arg2: arg1 + arg2 #前面为参数后面为表达式
print(sum(30,40))
#与filter函数连用
li = [1,2,3,4,5]
filter(lambda x:x>10,li)
3.推导式
-
思考:推导式更像赋予列表的特殊功能,既可以做判断也可以做循环,所生成的结果是列表,此时应该与map()函数做区分。感觉推导式是map()函数与filter()函数的plus版本,应用范围更广
-
列表推导式
- 目的:方便简便的生成一个列表
-
在推导式内部,遍历前面的用于对结果进行操作,遍历后的是对结果进行判断
v = [11,22,33,44,55,66]
val = [i+100 for i in v if i > 40]
print(val)
-
基本格式
-
[表达式 for 变量 in 列表]
-
[表达式 for 变量 in 列表 if 条件]
#示例1 vals = [i for i in "yang"] #变量 = [for循环变量 for循环一个可迭代对象] #示例2 val = [i+100 for i in range(10)] print(val) #示例3 #与三元运算混用 val = [99 if i >5 else 66 for i in range(10)] print(val) #示例4 #与lambda函数结合 v2 = [lambda x:x*i for i in range(10)] print(v2[0](2)) #注意输出结果为18 #示例5 def num(): return [lambda x:i*x for i in range(4)] print([m(2) for m in num()]) #注意此时的i为3,m()调用函数,此时参数X为2 #输出结果为[6,6,6,6] #示例6 #筛选 v3 = [i for i in range(10) if i >5] #循环i,先执行判断语句在添加至列表中 print(v3) #应与示例三做区分
-
集合推导式
- 其格式与列表生成式一样
- 与列表生成式的区别是其元素不可重复
-
集合推导式
v = { 'k'+str(i):i for i in range(10) if i >5} print(v) #注意集合的特性,当键重复时后者取代前者