了解python lambda函数的初学者指南

Python中的lambda是最有用、最重要、最有趣的特性之一。下面是如何使用它们以及它们为什么有用。...

Python中的lambda是最有用、最重要、最有趣的特性之一。不幸的是,他们也很容易误解和出错。

lambda-functi***-python

在本文中,我们将解释您需要了解的关于这些神秘函数的一切,如何使用它们,以及它们为什么有用。

在深入研究这些实际示例之前,您可能希望设置一个Python虚拟环境。如果您甚至不想这样做,那么您至少应该使用交互式在线pyth***hell来尝试这些示例。

在python中lambda是什么?

lambda只是在Python中定义函数的一种方法。它们有时被称为“lambda运算符”或“lambda函数”。

如果您以前使用过Python,那么您可能已经使用def关键字定义了函数,到目前为止,它对您来说运行良好。那么,为什么还有其他方法来做同样的事情呢?

区别在于lambda函数是匿名的。也就是说,它们是不需要命名的函数。它们用于创建小型的一次性函数,以防“真正的”函数太大和太大。

lambda返回一个可以分配给变量的函数对象。lambda可以有任意数量的参数,但它们只能有一个表达式。不能在lambdas中调用其他函数。

lambda函数最常见的用法是在需要一个简单的单行函数的代码中,如果要编写一个完整的普通函数就太过了。下面的“Map、Filter和Reduce如何?”,将更详细地介绍这一点。

如何在python中使用lambdas

在看lambda函数之前,让我们先看一下用“传统”方式定义的超基本函数:

def add_five(number): return number + 5 print(add_five(number=4))

how to use lamba functi*** in python

这个函数非常基本,但它用于说明lambdas。你的可能比这更复杂。此函数将通过number参数传递给它的任何数字加5。

以下是lambda函数的外观:

add_five = lambda number: number + 5 print(add_five(number=4))

how to use lamba functi*** in python

使用lambda这个词而不是def。不需要括号,但lambda关键字后面的任何单词都将创建为参数。冒号用于分隔参数和表达式。在本例中,表达式是数字+5。

不需要使用return关键字——lambda会自动为您执行此操作。

下面是如何创建具有两个参数的lambda函数:

add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print(add_numbers_and_five(number1=4, number2=3))

how to use lamba functi*** in python

如果你仍然不确定兰博达斯的观点,下一节将深入并帮助你看到光明。

带有map、filter和reduce的python lambdas

Python核心库有三个方法,分别是map、reduce和filter。这些方法可能是使用lambda函数的最佳理由。

map函数需要两个参数:一个函数和一个列表。它接受该函数并将其应用于列表中的每个元素,将修改后的元素列表作为映射对象返回。list函数用于将生成的映射对象再次转换回列表。

下面介绍如何在没有lambda的情况下使用map:

list1 = [2, 4, 6, 8]print(list1)def add_five(number): return number + 5 new_list = list(map(add_five, list1))print(new_list)

how to use lamba functi*** in python

这个map函数非常方便,但可能更好。add\u five函数作为参数传入,但是如果您不想每次使用map时都创建一个函数呢?你可以用lambda代替!

下面是相同代码的样子,只是函数被lambda替换了:

list1 = [2, 4, 6, 8]print(list1) new_list = list(map(lambda x: x + 5, list1))print(new_list)

how to use lamba functi*** in python

如您所见,不再需要整个add\u five函数。相反,lambda函数用于保持整洁。

使用过滤功能,过程大致相同。Filter接受一个函数并将其应用于列表中的每个元素,并创建一个新的列表,其中只包含导致函数返回True的元素。

首先,没有lambdas:

numbers = [1, 4, 5, 10, 20, 30]print(numbers)def greater_than_ten_func(number): if number > 10: return True else: return Falsenew_numbers = list(filter(greater_than_ten_func, numbers)) print(new_numbers)

how to use lamba functi*** in python

这个代码没有问题,但是有点长了。让我们看看lambda可以删除多少行:

numbers = [1, 4, 5, 10, 20, 30]print(numbers)new_numbers = list(filter(lambda x: x > 10, numbers))print(new_numbers)

how to use lamba functi*** in python

lambda函数已经取代了对整个大于十个函数的需要!用五个简单的词就完成了。这就是lambda强大的原因:它们减少了简单任务的混乱。

最后,让我们看看reduce。Reduce是另一个很酷的Python函数。它对列表中的所有项应用滚动计算。你可以用它来计算总数,或者把所有的数字相乘:

from functools import reducenumbers = [10, 20, 30, 40]print(numbers)def summer(a, b): return a + b result = reduce(summer, numbers)print(result)

how to use lamba functi*** in python

这个例子需要从functools模块导入reduce,但是不要担心,functools模块是Python核心库的一部分。

故事与lambda非常相似,不需要函数:

from functools import reducenumbers = [10, 20, 30, 40]print(numbers) result = reduce(lambda a, b: a + b, numbers)print(result)

how to use lamba functi*** in python

关于python lambdas的注意事项

这些示例展示了lambda函数以及Python核心库中的map、filter和reduce是多么容易。尽管如此,lambda函数还是有一些用处。

如果你做的不仅仅是一个基本的任务,或者你想调用其他的方法,使用一个普通的函数。lambda非常适合于一次性匿名函数,但它们必须只有一个表达式。如果您的lambda开始看起来像一个正则表达式,那么可能是时候重构到一个专用的方法了。

有关更多提示,请查看我们的Python面向对象编程指南和Python初学者常见问题解答指南。

  • 发表于 2021-03-24 12:14
  • 阅读 ( 244 )
  • 分类:编程

你可能感兴趣的文章

红宝石(ruby)和python(python)的区别

...Rossum设计的。Python因其易于阅读、学习和维护而被认为是初学者的流行语言之一。Python甚至对于复杂的应用程序也很有用。Python有大量的社区支持。它是一种多范式的编程语言。它支持面向对象的编程(OOP),用于使用对象对程...

  • 发布于 2020-10-19 17:41
  • 阅读 ( 338 )

python(python)和c语言(c language)的区别

...明为整数。Python语法易于学习、阅读和维护。它被认为是初学者开始编程的好语言。 什么是c语言(c language)? C是丹尼斯·里奇在开发UNIX操作系统时发现的一种高级编程语言。它是java、Python、JavaScript等其他编程语言的基础编程语...

  • 发布于 2020-10-24 05:03
  • 阅读 ( 298 )

如何用python编程和控制arduino

...Arduino IDE。如果你对微控制器世界是完全陌生的,我们的初学者指南Arduino将帮助你把一切都做好。 ...

  • 发布于 2021-03-11 16:20
  • 阅读 ( 881 )

java8lambdas简介

如果您是一名Java程序员,并且有兴趣了解更多关于Java8Lambda的知识,那么在本文中,我们将更深入地了解lambda语法和用法。 ...

  • 发布于 2021-03-12 08:09
  • 阅读 ( 240 )

json-python解析:简单指南

...运行的C++编写的应用程序可以轻松地将JSON数据与应用于Python的应用程序进行运行,并在Linux上运行。它的简单性和灵活性近年来得到了广泛的应用,特别是在更倾向于早期基于XML的格式方面。 ...

  • 发布于 2021-03-13 11:20
  • 阅读 ( 281 )

通过我的5门顶级课程真正学习javascript

... 技能等级——初学者。 ...

  • 发布于 2021-03-17 09:52
  • 阅读 ( 223 )

你应该知道的5种函数式编程语言

... 上面列出的一些语言对初学者来说比其他语言更好。看看我们为初学者提供的最佳编程语言列表。你会注意到这两个列表之间有些交叉。 ...

  • 发布于 2021-03-20 18:46
  • 阅读 ( 622 )

如何学习c编程与这个初学者的项目

... 原型是初学者C语言区别于其他语言的主要方式之一。简而言之,原型就像是以后定义的函数的预览。如果在main函数之后编写print \u for \u me()函数,编译时可能会收到警告: ...

  • 发布于 2021-03-22 14:01
  • 阅读 ( 207 )

为什么python不是适合您的编程语言

...最流行的编程语言之一。它清晰的语法和可读性使它成为初学者的完美编码语言。考虑到Python的广泛使用,认为学习Python是必要的是可以原谅的。 ...

  • 发布于 2021-03-23 11:47
  • 阅读 ( 351 )

为什么gpio零比rpi.gpio文件用于树莓pi项目

...脑。基于Linux的Raspbian操作系统内置了Python,这使它成为初学者的首选系统。它的通用输入/输出(GPIO)管脚使初出茅庐的**商很容易尝试DIY电子项目。 ...

  • 发布于 2021-03-23 12:59
  • 阅读 ( 306 )