python的lambda匿名函数

1、 lambda匿名函数的基本介绍

匿名函数的结构如下:

lambda arg1, arg2,... argN : expression

即:匿名函数的关键字是 lambda,之后是一系列的参数,然后用冒号隔开,最后则是由这些参数组成的表达式.
例如:

f=lambda x: x + 1

这个匿名函数有一个参数x,表达式是x+1。
我们可以这么调用:

print(f(3))

结果为:

<class 'function'>
4

所以,我们看到,匿名函数lambda和常规函数一样,返回的都是一个函数对象(function object),并且用户也几乎一样。但是它和常规函数还是有区别的:
1、lambda是一个表达式(expression),并不是一个语句。这里要说一下两者的区别,所谓表达式,就好比数学上的公式,比如x-1,x+1等;而语句,则是为了完成某些功能,比如赋值语句x=1完成了赋值;所以,lambda函数可以用在一些常规函数def不能用的地方,比如列表内部

    l_4= [(lambda x: x+1)(x) for x in range(10)]
    print(l_4)

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2、lambda匿名函数的主体只有一行简单表达式,并不能扩展成一个多行的代码块。这也就是说,lambda匿名函数主要是处理简单任务。

严格来说,python中的匿名函数都可以被替换成等价的其他形式,比如常规函数,所以在python程序中,匿名函数并不是必须的,但是匿名函数在一定情况下是可以简化代码的。

2、 lambda匿名函数的简单应用

2.1 map函数

map(function, iterable) 函数,表示,对 iterable 中的每个元素,都运用 function 这个函数,最后返回一个新的可遍历的对象。
比如:

l_1 = [1, 2, 3]
l_2 = map(lambda x: x + 1, l_1)
print(type(l_2))
for i in l_2:
print(i)

输出:

<class 'map'>
2
3
4

这里我们鼓励使用map函数,因为 map() 函数直接由 C 语言写的,运行时不需要通过 Python 解释器间接调用,并且内部做了诸多优化,所以运行速度最快。

2.2 filter函数

filter(function, iterable) 函数,它和上面说的map 函数类似,function 同样表示一个函数对象。filter() 函数表示对 iterable 中的每个元素,都使用 function 判断,并返回 True 或者 False,最后将返回 True 的元素组成一个新的可遍历的集合。
例如:

l_1 = [1, 2, 3]
print(type(l_3))    
for i in l_3:
   print(i)

输出:

<class 'filter'>
3

2.3 reduce函数

reduce(function, iterable) 函数,主要用来对一个集合做一些累积操作。主要要使用reduce函数,需要做import引入。
例如:

from functools import reduce
l_1 = [1, 2, 3]
s = reduce(lambda x, y: x + y, l_1)
print(type(s))

输出:

<class 'int'>
6

这里返回了这个列表累积的结果。

相关推荐

  1. pythonlambda匿名函数

    2024-07-21 09:10:04       19 阅读
  2. Python——lambda匿名函数

    2024-07-21 09:10:04       52 阅读
  3. Python基础】Lambda匿名函数

    2024-07-21 09:10:04       30 阅读
  4. 深入探讨Python匿名函数lambda

    2024-07-21 09:10:04       38 阅读
  5. Python:匿名函数lambda用法

    2024-07-21 09:10:04       30 阅读
  6. lambda函数匿名函数使用

    2024-07-21 09:10:04       28 阅读
  7. 匿名函数lambda

    2024-07-21 09:10:04       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 09:10:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 09:10:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 09:10:04       45 阅读
  4. Python语言-面向对象

    2024-07-21 09:10:04       55 阅读

热门阅读

  1. R9000X安装ubuntu后没有声音问题解决

    2024-07-21 09:10:04       17 阅读
  2. 【SpringBoot】测试Control接口方法

    2024-07-21 09:10:04       17 阅读
  3. Vit配置

    2024-07-21 09:10:04       19 阅读
  4. Tracy 小笔记:微信小程序 mpx 雷达图的实现

    2024-07-21 09:10:04       15 阅读
  5. C++知识点总结(49):树的存储与遍历

    2024-07-21 09:10:04       18 阅读
  6. 内存管理(知识点)

    2024-07-21 09:10:04       18 阅读
  7. 1604 - 高精度除单精度

    2024-07-21 09:10:04       15 阅读
  8. 数据结构(功能受限的表-栈&队列)

    2024-07-21 09:10:04       18 阅读
  9. Linux 下部署 syncthing 中继服务器

    2024-07-21 09:10:04       21 阅读