python中的常见语法糖汇总(列表推导式、三元运算、lambda函数)

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)
    #注意集合的特性,当键重复时后者取代前者
    
posted @ 2023-01-09 23:17  小杨的冥想课  阅读(708)  评论(0编辑  收藏  举报