深入分析Python中Lambda函数的用法

 更新时间:2022年12月22日 16:19:11   作者:alwaysrun  
lambda函数是Python中常用的内置函数,又称为匿名函数。和普通函数相比,它只有函数体,省略了def和return,使得结构看起来更精简。本文将详细说说Lambda函数的用法,需要的可以参考一下

lambda函数是一种小的匿名函数。

lambda语法

lambda函数:

lambda [arg1 [,arg2,...[,argn]]] : expression

  • 输入:可接受任意数量的参数,如lambda : print('hello')lambda x, y : x * y
  • 输出:expression计算得到的值;
  • 函数体:只能是单行的,有一个表达式;
  • 函数是匿名的(没有函数名);

示例1:lambda函数与普通函数类似,可直接引用(读取方式)外部变量

gAll = 10
if __name__ == '__main__':
    count = 2
    result = map(lambda x: x * count + gAll, range(10))
    print(list(result))
# [10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

示例2:lambda函数调用(且表达式可为简单if语句)

result = []
for i in range(10):
    result.append((lambda x: x * 2 if x % 2 == 0 else x)(i))
print(result)
# [0, 1, 4, 3, 8, 5, 12, 7, 16, 9]

示例3:lambda延迟计算引起的问题(若不使用参数,所有打印都是9),为避免此问题,可把i以参数方式传递进去(类似示例2),或直接把i作为参数赋值一下(类似生成同名局部变量):

result = []
for i in range(10):
    # result.append((lambda: print("lambda:", i)))  # 全部是9
    result.append((lambda i=i: print("lambda:", i)))
for f in result:
    f()

高阶函数

lambda函数可作为函数的返回值,以增强函数功能;以幂乘为例:

def powMulti(n):
    return lambda x: x**n
if __name__ == '__main__':
    p = powMulti(2)
    for i in range(10):
        print(p(i))

内置高阶函数

lambda可方便应用于:

  • map(fun, iterable, ...):影射;用fun依次操作集合中元素,并返回对应结果的生成器;
  • reduce(fun, iterable[, initializer]):累积;用fun(两个参数)依次操作集元素(val = fun(val, ele);val初始值为initializer,若忽略则为集合中的第一个元素),返回最终结果;
  • sorted(iterable[, cmp[, key[, reverse]]]):排序;
  • filter(fun, iterable):过滤;
src = [random.randint(0, 100) for _ in range(10)]
print(src)
dest = sorted(src)
print(dest)
ret = functools.reduce(lambda x, y: x + y, range(10), 10)
print(ret)  # 55

到此这篇关于深入分析Python中Lambda函数的用法的文章就介绍到这了,更多相关Python Lambda内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python学习之Django的管理界面代码示例

    Python学习之Django的管理界面代码示例

    这篇文章主要介绍了Python学习之Django的管理界面代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python+Pandas 获取数据库并加入DataFrame的实例

    Python+Pandas 获取数据库并加入DataFrame的实例

    今天小编就为大家分享一篇Python+Pandas 获取数据库并加入DataFrame的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 解决AttributeError:'NoneTypeobject' has no attribute'Window'的问题(亲测有效)

    解决AttributeError:'NoneTypeobject' has no attrib

    这篇文章主要介绍了解决AttributeError: ‘NoneType‘ object has no attribute ‘Window‘的问题(亲测有效),本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Python基于Tkinter实现的垃圾分类答题软件代码

    Python基于Tkinter实现的垃圾分类答题软件代码

    这篇文章主要介绍了基于Tkinter实现的垃圾分类答题软件代码,图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,需要的朋友可以参考下
    2023-04-04
  • Pycharm中新添加或者导入项目文件名红色的解决方法

    Pycharm中新添加或者导入项目文件名红色的解决方法

    Pycharm的代码中添加新的文件夹,发现文件夹下的文件名是红色的,遇到这样的问题如何解决呢,下面小编给大家带来了Pycharm中新添加或者导入项目文件名红色的解决方法,感兴趣的朋友一起看看吧
    2023-12-12
  • Python中的rjust()方法使用详解

    Python中的rjust()方法使用详解

    这篇文章主要介绍了Python中的rjust()方法使用详解,是Python学习入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 详解python的数字类型变量与其方法

    详解python的数字类型变量与其方法

    大家都知道数字数据类型存储数值,它们是不可变的数据类型,这意味着改变数据类型的结果值,需要一个新分配的对象。这篇文章给大家详细介绍了python的数字类型变量以及其方法,文中介绍的很详细,相信对大家的理解和学习很有帮助,有需要的朋友们可以参考借鉴。
    2016-11-11
  • python opencv实现目标区域裁剪功能

    python opencv实现目标区域裁剪功能

    这篇文章主要介绍了python opencv实现目标区域裁剪功能,通过截取到坐标信息以后用CV2的裁剪就可以完美实现,本文给大家分享实例代码,需要的朋友可以参考下
    2021-07-07
  • Python内建类型float源码学习

    Python内建类型float源码学习

    这篇文章主要为大家介绍了Python内建类型float源码学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 为什么入门大数据选择Python而不是Java?

    为什么入门大数据选择Python而不是Java?

    为什么入门大数据选择Python而不是Java?这篇文章就来谈谈学习大数据入门语言的选择,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论