原文: https://pythonspot.com/python-lambda/

我们可以创建匿名函数,称为 lambda 函数。 Lambda 函数与常规 Python 函数不同,它们源自 Lambda 演算。 它允许您编写非常简短的函数。

Lambda 函数示例

此代码显示 lambda 函数的用法:

  1. #!/usr/bin/env python
  2. f = lambda x : 2 * x
  3. print f(3)

Lambda 函数从不使用return语句,它总是返回。 Lambda 函数可能包含if语句:

  1. #!/usr/bin/env python
  2. f = lambda x: x > 10
  3. print(f(2))
  4. print(f(12))

map函数

map的定义是map(function, iterable)。它将函数应用于可迭代对象的每个项目。我们可以对列表和 lambda 函数使用map()

  1. #!/usr/bin/env python
  2. list = [1,2,3,4,5]
  3. squaredList = map(lambda x: x*x, list)
  4. print(squaredList)

在使用 lambda 函数的任何地方,都可以改用普通函数。 Lambda 函数不是语句,而是表达式。 Lambda 函数不支持语句块。

filter函数

filter(function, iterable)从元素中创建一个新列表,该函数为其返回True。例:

  1. #!/usr/bin/env python
  2. list = [1,2,3,4,5,6,7,8,9,10]
  3. newList = filter(lambda x: x % 2 == 0, list)
  4. print(newList)

返回列表只包含 lambda 表达式lamba x: x % 2 == 0为真的元素。

reduce函数

函数reduce(function, iterable)从左到右将函数应用在iterable的各个项目上。 例:

  1. #!/usr/bin/env python
  2. list = [1,2,3,4,5]
  3. s = reduce(lambda x,y: x+y, list)
  4. print(s)

在这种情况下,表达式始终为真,因此它简单地汇总了列表中的元素。 另一个例子:

  1. #!/usr/bin/env python
  2. list = [10,6,7,5,2,1,8,5]
  3. s = reduce(lambda x,y: x if (x > y) else y, list)
  4. print(s)