分享

Python 匿名函数Lambda的9种用法

 copy_left 2023-04-03 发布于四川
  1. 简单的 lambda 函数
x=1f=lambda x: x + 1print(f(1))

这个简单的 lambda 函数接受一个参数 x,并返回 x+1 的结果。

  1. 将 lambda 函数赋值给变量
add = lambda x, y: x + yprint(add(1,2))

这个 lambda 函数接受两个参数 x 和 y,并返回它们的和。

  1. 将 lambda 函数用于 map 函数

map 函数可以将一个函数应用于一个迭代器中的每个元素,并返回一个新的迭代器。lambda 函数常常用于 map 函数中。

lst = [1, 2, 3, 4, 5]new_lst = list(map(lambda x: x * 2, lst))print(new_lst)

这个 lambda 函数接受一个参数 x,并返回 x*2 的结果。map 函数将 lambda 函数应用于列表 lst 中的每个元素,并将结果存储在一个新列表 new_lst 中。

  1. 将 lambda 函数用于 filter 函数

filter 函数可以使用一个函数来过滤一个迭代器中的元素。lambda 函数常常用于 filter 函数中。

lst = [1, 2, 3, 4, 5] new_lst = list(filter(lambda x: x % 2 == 0, lst))

这个 lambda 函数接受一个参数 x,并返回 x 是否是偶数的布尔值。filter 函数将 lambda 函数应用于列表 lst 中的每个元素,并仅将返回 True 的元素存储在新列表 new_lst 中。

  1. 将 lambda 函数用于 sorted 函数

sorted 函数可以使用一个函数来排序一个列表。lambda 函数常常用于 sorted 函数中。

lst = [(2, 'b'), (1, 'a'), (3, 'c')] new_lst = sorted(lst, key=lambda x: x[0])

这个 lambda 函数接受一个参数 x,并返回元组 x 中的第一个元素。sorted 函数将 lambda 函数应用于列表 lst 中的每个元素,并按照返回的结果对元素进行排序。

6.作为函数参数传递

在 Python 中,函数可以作为参数传递给其他函数。lambda 表达式可以用于这种情况,以便快速定义并传递一个匿名函数。例如,可以使用 lambda 表达式来排序列表:

fruits = ['apple', 'banana', 'cherry', 'durian']sorted_fruits = sorted(fruits, key=lambda x: len(x))print(sorted_fruits) # ['apple', 'banana', 'cherry', 'durian']

在这个例子中,lambda 表达式 lambda x: len(x) 用于计算列表中每个元素的长度,并将其作为排序的关键字。

7.用于返回函数

在 Python 中,函数可以作为另一个函数的返回值。lambda 表达式可以用于快速定义并返回一个匿名函数。例如,可以定义一个函数,该函数返回一个 lambda 表达式,该 lambda 表达式返回传递的参数的平方值:

def get_squared_function(): return lambda x: x**2f = get_squared_function()print(f(2)) # 4

在这个例子中,get_squared_function 函数返回一个 lambda 表达式 lambda x: x**2,该 lambda 表达式接受一个参数并返回其平方值。然后,返回的函数赋值给 f 变量,并在调用时用 f(2) 的方式使用。

8、用于条件表达式,与4一样

lambda 表达式还可以用于条件表达式中,以便根据条件返回一个值。例如,可以使用 lambda 表达式来检查列表中的每个元素是否为奇数:

numbers = [1, 2, 3, 4, 5]odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))print(odd_numbers) # [1, 3, 5]

在这个例子中,lambda 表达式 lambda x: x % 2 != 0 用于检查列表中的每个元素是否为奇数,并返回一个布尔值。然后,filter 函数用于筛选列表中符合条件的元素。

9、使用Lambda函数对列表进行归约,计算所有元素的和

from functools import reducelst = [1, 2, 3, 4, 5]total = reduce(lambda x, y: x + y, lst)print(total) # 15

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多