专业编程基础技术教程

网站首页 > 基础教程 正文

Python:Lambda 函数的 7 种应用

ccvgpt 2024-12-11 11:05:05 基础教程 4 ℃

sort函数

sort()方法是与列表一起使用的方法,使用lambda 函数为其元素定义自定义排序机制。该方法有一个key带有函数的可选参数。可以使用lambda来更改该列表元素的排序方式,而不是定义函数。li = [23, 56, 89, 32, 12]


li.sort(key=lambda x: str(x)[1])
print(li)

如果没有关键参数,[12, 23, 32, 56, 89]将是最终输出。但是看看上面编写的程序的输出。

Python:Lambda 函数的 7 种应用

输出:

[32、12、23、56、89]

在这里,仅根据元素的第二位数字而不是整数对元素进行排序。同样,可以使用任何自定义逻辑对值进行排序。

max函数

内置函数max()用于从值集合中查找最大值。

此函数还包含一个可选key参数,该参数可以采用lambda 函数来确定如何找到最大值。

li = [1, 0, -1, 2, -3] 
print(max(li, key=lambda x: abs(x)))

从逻辑上讲,列表值中的最大值将为2。但是,使用了key参数并传递了lambda来在避免负号后找到最大值。

所以这段代码的输出将是-3。

-3

这就是在函数中使用lambda 的max()方式。

min函数

与该函数类似max()min() 内置函数也使用key参数和 lambda 函数来自定义如何在值集合中选择最小值。

在此示例中,做一个小更改,要求lambda 函数返回每个带负号的值。

li = [1, 2, 3, 4, 5] 
print(min(li, key=lambda x: -x))

在这里,已将每个值更改为负值。通常,最小值为1,但现在为5,因为-5是负值中的最小值。

输出:

5

min()函数使用相同的概念max(),但用于选择最小值。

filter函数

该类filter()用于根据给定的函数从值集合中过滤值。它返回一个过滤器对象,需要在打印值之前将其转换为所需的数据类型。

可以使用lambda 函数来过滤值,而不是提供预定义的函数。

为给定函数返回的 所有元素都将被保留。任何返回的True东西都会被忽略。这是一个简单的例子。 False

li = ['bat', 'tip', 'cat', 'pet'] 
fr = filter(lambda x: x[1] == 'a', li) 
print(list(fr))

在这里,检查了每个值的第二个字符是否具有‘a’. 任何不满足此条件的元素都会被拒绝。

因此输出将只有batcat作为过滤值。

[‘bat’、‘cat']

此处使用lambda函数作为必须如何过滤元素的决定器。

map函数

该类map()用于将函数应用于值集合中的每个元素。

示例包括将大写字符串转换为小写,以及将字符串值转换为整数。还有其他有用的应用程序。它返回一个映射对象,然后可以将其转换为任何所需的集合数据类型。

对于需要应用于每个元素的任何更改,可以将该函数替换为lambda 函数。例如,您可以找到每个数字的立方值并将其作为最终结果返回。

这是代码。

li = [4, 8, 3, 2, 9] 
mp = map(lambda x: x ** 3, li) 
print(list(mp))

输出:

[64、512、27、8、729]

可以使用类和lambda函数将任何常见的单表达式逻辑应用于每个元素。map()

reduce函数

reduce()函数是模块的一部分functools,用于从值集合中生成最终的单个值。最终值是使用函数内部传递的函数确定的reduce()

例如,对于一个值列表,您以累积应用乘法运算,最终得到所有值相乘的结果。在这里,可以使用lambda来代替直接函数。

from functools import reduce 

li = [5, 7, 3, 4, 6] 
re = reduce(lambda x, y: x * y, li) 
print(re)

reduce()函数中,始终使用两个参数。一个用于第一个值,另一个用于第二个值。这里57相乘。现在,结果35x再次传递给参数,第三个值3传递给参数y

这种情况会一直发生,直到列表中没有元素为止,并且最终结果存储在变量 re中。

输出:

2520

这就是我们在reduce()函数中使用 lambda 的方式。

sorted函数

内置sorted()函数与方法类似sort(),但是,它对所有集合类型都是通用的,而不仅仅是列表。它们用于对值集合进行排序。

此函数还有一个可选key参数,您可以在其中使用 lambda 函数来更改该列表元素的排序方式。

下面是一个示例,其中列表中的数字根据每个数字的反转进行排序。

li = [59, 38, 81, 66, 43] 
so = 排序(li, key=lambda x: str(x)[::-1]) 
print(so)

输出将是,

[81、43、66、38、59]

这就是该sorted()函数与lambda一起使用的方式,以根据自定义条件对值进行排序。

最近发表
标签列表