[
](erickleppen.medium.com/?source=pos…)
6月11日
-
5分钟阅读
[
拯救
到底什么是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 这样的数据结构。