• 【python】lambda表达式


    1. lambda表达式介绍

    lambda表达式的语法格式:

    lambda 参数列表 : lambda

    有时使用函数时不需要给函数分配一个名称,该函数就是匿名函数,python中使用lambda表达式表示匿名函数。lambda表达式等价于:

    1. def 函数名(参数列表):
    2. 函数体
    3. return 返回值

    lambda是关键字声明,参数列表跟函数中的参数列表一样,但是不需要使用小括号括起来;冒号后面是lambda体,lambda表达式的主要代码在lambda体编写,类似于函数体。

    lambda体只能包含一条语句,该语句会计算一个结果返回给lambda表达式,不需要return语句返回。

    2. lambda和def的区别

    • lambda可以立刻传递(无需变量),自动返回结果;
    • lambda在内部只能包含一行代码;
    • lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务;
    • lambda可以定义一个匿名函数,而def定义的函数必须有一个名字;

    lambda函数的优势:

    • 对于单行函数,使用lambda表达式可以省区定义函数的过程,让代码更加简洁;
    • 对于不需要多次复用的函数,使用lambda表达式可以在用完之后立即释放,提高程序执行的性能;

    3. lambda函数使用示例

    3.1. 定义计算函数

    1. add_lambda = lambda a,b:a+b
    2. print(add_lambda(10,20)) # 输出 30
    3. print((lambda a,b:a*b)(10,50)) # 输出 500

    3.2. 结合判断语句

    1. get_odd_even = lambda x:"偶数" if x%2==0 else "奇数"
    2. print(get_odd_even(1)) # 输出 奇数
    3. print(get_odd_even(4)) # 输出 偶数

    3.3. 不使用参数

    1. print_python = lambda : 'Hello python'
    2. print(print_python()) # 输出 Hello python

    3.4. 结合列表使用

    1. l = [['2','CPP'],['3','java'],['4','php'],['1','c'],['7','python'],['6','html']]
    2. l.sort(key=lambda x:x[0]) # 按照列表的第一个元素进行排序
    3. print(l) # 输出 [['1', 'c'], ['2', 'CPP'], ['3', 'java'], ['4', 'php'], ['6', 'html'], ['7', 'python']]

    元组、字典也可以这样使用。

    4. 与map/filter/reduce方法混搭使用

    与map方法混搭使用时,遍历序列,对序列中每个元素进行操作,最终获得新的序列。

    示例:

    1. l = map(lambda n : n**2, [1,2,3,4,5])
    2. print(list(l)) # 输出 [1, 4, 9, 16, 25]

    与filter混搭使用进行元素筛选,最终获得符合条件的序列。

    示例:

    1. l = filter(lambda n : n%2==0, {1,2,3,4,5,6,7,8,9})
    2. print(tuple(l)) # 输出 [2, 4, 6, 8]

    与reduce混搭使用对元素进行累计操作,python3中移到了functools模块中,使用时需要导入functools模块。

    1. l=reduce(lambda x,y:x+y,(1,2,3,4,5))
    2. print(l) # 输出 15

    文章参考:100天精通Python(基础篇)——第26天:lambda表达式_无 羡ღ的博客-CSDN博客

  • 相关阅读:
    Linux Docker图形化工具Portainer如何进行远程访问
    基于Linux Alpine 制作 Java 8、11 镜像并支持中文
    蓝桥杯 map
    autojs修改顶部标题栏颜色
    [java]JsonObject与JsonArray转换
    考虑温度影响的vumat子程序在木材受火后强度分析中的应用
    深度学习笔记之线性代数
    哪些人更容易受到网络攻击?
    golang 组件 validator介绍以及使用案例——单字段验证和结构体验证
    Maven编程环境搭建以及VS code Maven设置
  • 原文地址:https://blog.csdn.net/sinat_41752325/article/details/126755737