学习Python中的 Lambda函数

Lambda表达式是一种在Python中快速创立匿名函数的办法。一个匿名函数就像一个一次性运用的函数,没有姓名。你只需运用它一次,然后在程序中继续前进。Lambda 函数一般与 map() 和[filter()]结合运用。lambda函数的办法能够方便地以速记的形式快速界说一个能够与这些函数一同运用的函数。在本教程中,咱们将介绍几个比如,阐明如何在 Python 中界说 lambda 函数,以及如何有效地运用它们。


从函数到Lambda

一个Lambda函数仅仅一般Python函数的一个速记版别。所以为了更好地了解如何在Python中制作一个lambda函数,咱们能够按部就班地将一个一般函数转化成一个lambda函数。首要,让咱们看一个标准 Python 函数的简略比如。

def plus_one(num):
    result = num + 1
    return result
plus_one(7)
8

去掉了 result变量

咱们能够简略地回来这个计算结果,而不是取num变量,加一,然后储存在结果中。

def plus_one(num):
    return num + 1
plus_one(7)
8

让函数成为一个单行代码

现在咱们能够通过在一行中进行计算来进一步简化该函数。

def plus_one(num): return num + 1
plus_one(7)
8

删去 def关键

在这里,咱们把def关键字和咱们分配给咱们的函数**(def plus_one()**)的称号和小括号一同删去。

num: return num + 1

删去 return关键字

兰姆达函数没有回来句子,因为任何兰姆达函数都会隐含回来句子。

num: num + 1

增加lambda关键词

最后,咱们能够在剥离后的表达式前面加上lambda关键字,瞧!这就是一个lambda函数。咱们就有了一个lambda函数。

lambda num: num + 1

将Lambda分配给一个变量

为了运用lambda函数,你经常会把它与其他函数如map()或filter()结合起来运用。它也一般与reduce()函数一同运用。咱们稍后再看这个。但是,你运用lambda的第一种方式是简略地将它赋值给一个变量,然后将该变量用作一个函数。让咱们看看这是怎么做的。

plus_one = lambda num: num + 1
plus_one(7)
8

运用一个 lambda函数与 map()

map()函数的第一个参数总是一个函数自身。它被称为转化函数。下面是一个运用map()的lambda的比如。

nums = [1, 2, 3, 4, 5]
result = map(lambda x: x * 2, nums)
print(list(result))
[2, 4, 6, 8, 10]

运用一个 lambda函数与 filter()

filter()函数创立了一个函数回来真值的元素的列表。它经常与lambda表达式一同运用。这里有一个比如,咱们只想要大于3的数字。

nums = [1, 2, 3, 4, 5]
result = filter(lambda x: x > 3, nums)
print(list(result))
[4, 5]

运用一个 lambda函数与 reduce()

reduce()函数对一个列表中的接连数值对进行翻滚计算。一个常见的比如是对一个列表中的所有值进行求和,所以让咱们在咱们简略的数字列表上试试。

from functools import reduce
nums = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, nums)
print(result)
15

if句子与lambda

你能用 lambda 函数运用 Python 的if句子吗?为什么是的,你能够。让咱们看一个比如。

result = map(lambda str: str.capitalize() if 'a' in str else str, 'abracadabra')
print(list(result))
['A', 'b', 'r', 'A', 'c', 'A', 'd', 'A', 'b', 'r', 'A']

Python Lambda 函数总结

  • Lambdas 是单行函数。
  • 也被称为匿名函数。
  • 一般在你不想在程序中两次运用一个函数时运用。
  • 它的工作方式和一般函数相同,甚至行为也和它们相同。
  • lambda的主体是一个单一的表达式,而不是一个句子块。
  • 快速制作临时性的函数,而不需要正确界说一个函数,运用 def.
  • lambda是为编码简略的函数而设计的。
  • 正式的def函数应该用于更大的任务。