到底什么是Python Lambda函数?

116 阅读5分钟

[

Eric Kleppen

](erickleppen.medium.com/?source=pos…)

埃里克-克莱彭

关注

6月11日

-

5分钟阅读

[

拯救

](medium.com/m/signin?ac…)

到底什么是Python Lambda函数?

通过使用Lambda函数,学习如何像专业人士一样编写Python。

照片:Anete LūsiņaonUnsplash

学习Python需要时间

菜鸟Pythonista 的道路可能需要一段时间,而且因人而异。大多数人开始学习Python时,先复习数字、布尔运算和字符串的基本数据结构,然后再学习复杂的数据结构,如列表和字典。从那里你学习循环和if/else控制逻辑,并最终学习通过函数编写可重用的代码。

一旦你开始探索函数,你就会遇到lambda函数,这在一开始可能看起来很吓人。与列表理解类似,lambda函数允许你编写简洁的代码。通常情况下,作为一个定义的函数需要几行的东西,可以用一个 lambda 函数在一行中完成!

审查 Python 函数

典型的Python函数只是一组独立的指令,旨在执行一项特定的任务。掌握和理解这些函数是很重要的,因为它们允许我们通过将代码分成较小的、可重复使用的块来保持代码的条理性。如果我们正在编写一个大型程序,利用函数可以使代码更容易阅读和调试。

在Python中,我们使用关键字来定义一个函数 定义关键字定义一个函数,然后给函数一个名字,以及影响函数体执行的任何必要参数。很多时候, 返回 关键字被用来终止函数,并将所需的输出返回给调用该函数的人。下面是一个函数的例子。

#python example functiondef my_function(string):     return print(string) 

测试my_function

这个例子my_function 将一个字符串 作为参数,并将该字符串作为返回的输出打印出来。

什么是Lambda函数?

为了使你的Python技能更上一层楼,你需要同时掌握普通函数和Lambda函数。Lambda 函数对于使代码更短、更简洁是非常好的,这也是Pythonista 的方式我们将看几个简单的例子来复习语法,然后看一些λ函数的实际用例,这将使你看起来像个专家。

正如我们在前面的例子中看到的,普通函数是用def ,并给出一个名字。而Lambda函数是用lambda 关键字来定义,并且是无名的。它们是匿名函数,不在任何命名空间中定义,而且是为了单次使用。

当我第一次了解lambda函数时,它似乎有点让人摸不着头脑。由于lambda函数可以接受任何数量的参数,但只能有一个表达式,所以语法会让人感到困惑。这里有几个简单的例子。

#lambda syntax#lambda <arguments> : <return expression>

测试lambda函数的例子

请注意,多个参数是用逗号隔开的。当调用函数时,调用者提供参数。返回表达式被定义在冒号(:)之后。有一个单一的返回表达式,但返回表达式可以是简单的,也可以是复杂的。它甚至可以是另一个函数,这使得λ函数成为你的Python编程工具箱中一个强大的工具。

使用Lambda函数

让我们来看看我们如何使用lambda以Pythonic的方式来写函数。下面我们有一个函数,它检查一个字符串列表中的 "二 "字。它返回字符串列表,并根据该词是否在字符串中,返回True或False。

sentences = ['Sentence one.', 'Sentence two.', 'Sentence three.']

测试contains_two函数

与其定义一个函数并使用 for 循环来浏览列表,我们可以使用 Python 的 map()函数和 lambda 函数来重写。

contains_two_lambda = map(lambda x: (True, x) if 'two' in x else (False, x), sentences)

测试contains_two_lambda函数

**map()**函数接收一个函数和一个序列作为参数,在给定的序列上运行该函数。我们传递给 map() 的函数是一个 lambda 函数,允许我们只用一行代码就能完成我们定义的函数所做的同样事情

Lambda函数与map()、reduce()和filter()等函数配合得很好,这三个内置的Python函数将一个函数作为参数。Lambda函数在数据挖掘中也很受欢迎,因为它们可以与pandasdataframes 。它们可以使对列和行的逻辑操作变得简明扼要的单行线。

在Pandas数据框架中使用Lambda函数

作为一名分析师,我发现自己一直在使用Pandas DataFrames。由于DataFames是一种流行的数据结构,让我们来看看在dataframes ,使用lambda函数来转换数据是多么容易。让我们用一些模拟数据创建一个简单的pandas数据框架。

#import dependenciesimport pandas as pd

数据框架示例

接下来,让我们使用lambda函数创建一个名为newSalary 的新列。如果我根据列YearsAtCompany ,并想看看一个人的新工资是多少,我可以使用 [apply()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html)函数,就像我们在前面的例子中使用map() 一样。

df['newSalary'] = df['Salary'].apply(lambda x: x * (1 + df['YearsAtCompany']/10))

验证newSalary列

请注意,apply() 函数将lambda函数作为一个参数,并将该函数应用于Salary 列中的每一行。lambda函数中的表达式使用YearsAtCompany来确定提高的大小。

总结

像专家一样写Python需要练习,所以如果你对像lambda函数这样的新概念感到畏惧,不要担心。语法看起来很奇怪,但是λ函数允许你编写简洁的、一次性使用的函数,这些函数非常适合应用逻辑运算。

虽然它们只能执行一个表达式,但表达式可以很复杂,甚至包括另一个函数。Lambda 函数可以很好地处理一系列的数据,甚至像 Pandas DataFrames 这样的数据结构。