lambda( )函数

lambda( )函数
一、Python lambda() 函数

Lambda函数也被称为匿名(没有名称)函数,它直接接受参数的数量以及使用该参数执行的条件或操作,该参数以冒号分隔,并返回最终结果。为了在大型代码库上编写代码时执行一项小任务,或者在函数中执行一项小任务,便在正常过程中使用lambda函数。

lambda 关键字可以用来创建一个 lambda 函数,紧跟其后的是参数列表和用冒号分割开的单个表达式。例如,lambda x: 2 * x 是将任何输入的数乘2,而 lambda x, y: x+y 是计算两个数字的和。

这个lambda()函数采用以下形式:

lambda argument_list:expersion

argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的.expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。

匿名函数使用注意点:

1.不要返回任何值

2.不要忘记更好的选择

3.不要将它赋值给变量

4.不要忘记列表推导式

二、普通函数与 lambda() 函数的区别

1.没有名称
Lambda函数没有名称,而普通操作有一个合适的名称。**

2.Lambda函数没有返回值
使用def关键字构建的普通函数返回值或序列数据类型,但在Lambda函数中返回一个完整的过程。假设我们想要检查数字是偶数还是奇数,使用lambda函数语法类似于下面的代码片段。

b = lambda x: "Even" if x%2==0 else "Odd"
b(9)

3.函数只在一行中
Lambda函数只在一行中编写和创建,而在普通函数的中使用缩进

4.不用于代码重用
Lambda函数不能用于代码重用,或者不能在任何其他文件中导入这个函数。相反,普通函数用于代码重用,可以在外部文件中使用。

下面是一些lambda函数示例:

lambda x, y: xy;函数输入是x和y,输出是它们的积xy;
lambda:None;函数没有输入参数,输出是None;
lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算);
lambda **kwargs: 1;输入是任意键值对参数,输出是1。

三、Python lambda() 函数的四种用法

1.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数;

c=lambda x,y,z:x*y*z
c(2,3,4)

>> 24

也可以在函数后面直接传递实参:

(lambda x:x**2)(3)


>> 9

2.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数;

3.将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数;

4.将lambda函数作为参数传递给其他函数。

**filter函数。**此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。

fliter(lambda x:x%3==0,[1,2,3,4,5,6])


>> [3,6]

**sorted函数。**此时lambda函数用于指定对列表中所有元素进行排序的准则。例如sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。

创建由元组构成的列表:

a=[('b',3),('a',2),('d',4),('c',1)]

# 按照第一个元素排序
sorted(a,key=lambda x:x[0])
>> [('a',2),('b',3),('c',1),('d',4)]

# 按照第二个元素排序
sorted(a,key=lambda x:x[1])
>> [('c',1),('a',2),('b',3),('d',4)]

**map函数。**此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。

**reduce函数。**此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: ‘{}, {}’.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是’1, 2, 3, 4, 5, 6, 7, 8, 9’。

from functools import reduce
print(reduce(lambda a,b:'{},{}'.format(a,b),[1,2,3,4,5,6,7,8,9]))

>> 1,2,3,4,5,6,7,8,9

另外,部分Python库函数也接收函数作为参数,例如gevent的spawn函数。此时,lambda函数也能够作为参数传入。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值