Python之lambda函数:用法与实例
卜寒兮
科技|人工智能|CV博士|铲屎的
什么是lambda?
Lambda是一种不需要名字(即标识符)、由一个单独表达式成的匿名内联函数,表达式会在调用时被求值。
在Python中,创建 lambda 函数的语法为:
lambda [parameters]: expression
也就是说lambda函数包含三个部分:
- 关键字lamdbda;
- 参数;
- 函数体
lambda函数可以包含任意多的参数,但是函数体部分只能包含一个表达式。
此外,lambda函数用一行代码写成,并且被立即调用。
实例1
代码解释:这里定义了一个用于保存lambda函数的返回值。
- lambda关键字用于定义匿名函数;
x
和y
是传递给lambda函数的参数;- 函数体部分将传递进去的两个参数相加,注意这里只能有一个表达式,不可以写多个语句。
- 调用函数并打印返回值。
实例2
代码解释:
- 首先定义了一个字符串,用于传递给lambda函数;
- 声明了一个lambda,调用print函数并打印字符串。
但是程序并没有打印传递字符串参数,这是因为lambda返回的是一个函数对象。在这个例子中,lambda并没有被print函数调用,而只是返回函数对象和存储它的内存位置。
实例3
然而,执行如下代码,并输出:
代码解释:
- 仍然是上面例子中定义的字符串;
- 这部分定义了一个lambda函数,并通过传递字符串作为参数立即调用它。这就是所谓的IIFE (immediately invoked function execution): 立即调用函数表达式。第二行代码不是很好理解,可以把第一个括号里面的部分等价于一个名字为fun的函数:
(lambda x : print(x))
-->fun
,这样第二行实际就变成了:fun(x)
,如前面分析,这里的fun()
函数的功能就是打印字符串。所以当把x
作为参数传递给他的时候,就打印了该字符串。
与python内置函数一切使用lambda
通过python中的内置函数,如filter()
、map()
等一起使用,可以可方便的实现一些操作。比如:
这行代码首先定义了一个将一个数相加两次的函数,然后把2作为参数传递给这个函数。
函数一旦被定义,就会被立即执行。也就是上面所说的IIFE (immediately invoked function execution): 立即调用函数表达式。
lambda函数的这个属性使得人们可以在filter()
、map()
等函数的内部使用它,这在不需要再次使用这些函数的时候是很有用的。
filter()
函数
filter()
函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用list()
来转换。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
filter()函数的语法:
filter(function, iterable)
例如:
这里首先定义了一个包含数字的列表,然后通过lambda定义一个函数来判断列表中的各个元素是否是大于0的,如果不满足,则过滤掉,由于filter()
函数的返回值是迭代器对象,所以需要使用list()
函数将其转换为列表。
map()
函数
map(function, iterable, ...)
函数会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
reduce()
函数
reduce(function, iterable[, initializer])
函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
编辑于 2024-01-16 15:27・IP 属地江苏