• Python学习第六篇:lambda 表达式


    Python学习第六篇:lambda 表达式

    ——

    活动地址:CSDN21天学习挑战赛

    lambda函数

    Python中使用lambda表达式表示匿名函数,允许用lambda关键字创造"匿名函数",可以不给函数分配名称。匿名是不需要以标准的方式来声明,像 def 语句的标准方式。

    作为函数,也有其参数,语法格式:

    lambda 参数列表: lambda
    • 1

    ——

    lambda 函数与 def 函数对比

    以简单的代码为例:

    add1 = lambda x,y:x+y
    
    def add2(x,y):
        return x+y
    
    print(add1(10,20))
    print(add2(10,20))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    请添加图片描述

    可以看到,lambdadef 所创建的函数功能是一样的。
    lambda表达式中,x,y相当于传入的参数,整个函数会返回x+y的值
    一个完整的 lambda"语句"代表了一个表达式,这个表达式的定义体必须和声明放在同一行

    区别:

    • lambda可以定义一个匿名函数,而def定义的函数必须有一个名字。
    • lambda是一个表达式,而不是一个语句。所以lambda 相比 def 可以用在更多的地方,比如一个列表常量中或函数调用的参数中。
    • lambda的主体是一个单个的表达式,而不是一个代码块, 不需要使用return语句返回,但不能像 def 那样使用 for in、while 等语句了。
    • lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务。

    ——

    lambda 的使用

    lambda函数主要用来写一些小体量的一次性函数,避免污染环境,同时也能简化代码。
    (可以使用 def 代替, 但是 lambda 仅需要嵌入小段可执行代码的情况下它们会带来一个更简洁的代码结构。)

    ——

    if判断奇偶性

    lm = lambda x:"偶数" if x%2==0 else "奇数"
    
    def df(x):
        if x%2 == 0:
            return "偶数"
        else:
            return "奇数"
    
    print(lm(5))
    print(df(8))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    lambda 一行完成,def 通过分支return返回不同结果。
    请添加图片描述

    ——

    无参数表达式

    lm = lambda: "testlambda"
    
    def df():
        return "testdef"
    
    print(lm())
    print(df())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    都直接打印 return 的字符串。
    请添加图片描述

    ——

    列表排序

    用到sort()函数。

    a=[('9','黑'),('5','白'),('8','绿'),('3','紫'),('6','青'),('4','黄')]
    a.sort(key=lambda x:x[0])
    b=sorted(a,key=lambda x:x[0],reverse=True)
    print(a)
    print(b)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请添加图片描述

    ——

    map方法使用

    遍历序列,对序列中每个元素进行操作,最终获得新的序列

    def add(num):
        return num**2
    
    x = map(add,[1,2,3,4,5])
    print(type(x))
    print(list(x))
    
    y = map(lambda num:num**2,[1,2,3,4,5])
    print(list(y))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    map类型不能直接打印,所以转换为list()列表再打印的。
    lambda表达式中,map函数第一个参数是一个lambda表达式,输入一个参数,返回元素的平方。第二个就是需要作用的对象,此处是一个列表。
    请添加图片描述

    ——

    filter 方法使用

    对序列中的元素进行筛选,最终获得符合条件的序列。

    x = filter(lambda x:x%2==0, range(20))
    print(type(x))
    print(list(x))
    
    • 1
    • 2
    • 3

    同样要对filter 类型进行转换为列表再打印出。
    请添加图片描述
    ——

    reduce 方法使用

    对序列内所有元素进行累计操作;Python3中删掉了全局的reduce函数,需要从functools引入

    from functools import reduce
    
    list = [1,4,7,3,2,9]
    result1 = reduce(lambda x,y:x+y,list)
    result2 = reduce(lambda x,y: x*y, list)
    print('累加:{}'.format(result1))
    print('累乘:{}'.format(result2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    reduce 中使用的 lambda表达式需要两个参数,reduce函数共三个参数,第一个是就是lambda表达式,第二个是要累计的序列,第三个是初始值,初始值和序列第一个元素操作,然后结果再与第二个元素操作,以此类推。
    请添加图片描述

  • 相关阅读:
    windows 安装cuda 11.2过程记录
    技术分享 | 代码覆盖率集成
    JS模块化——CommonJS AMD CMD UMD ES6 Module 比较
    2021年9月电子学会图形化三级编程题解析含答案:接红包游戏
    18.C++中模板参数类型推断与引用
    YOLOv8改进D-LKA:在D-LKA结构的基础上进行多种改进结构,同时拥有Attention和大卷积核的能力,高效改进
    MySQL数据库事务控制
    基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的稻田虫害检测系统详解(深度学习+Python代码+UI界面+训练数据集)
    Java入门实操复习心得(全)
    行为型:策略模式
  • 原文地址:https://blog.csdn.net/Goodric/article/details/126304019