对于Python初学者来说,循环是首先接触到的控制结构之一,但它们往往显得繁琐,使得代码变得冗长和不整洁。那么,有没有更好的解决方案呢?答案就是Python中的Lambda函数!Lambda函数为数据科学家提供了双重优势:能够编写更简洁的Python代码,并加速机器学习任务的执行。关键在于掌握Lambda函数的使用方法,这对于初学者来说可能是一个挑战。最初,也发现Lambda函数难以理解。它们虽然简短,但对于新手来说可能显得有些困惑。但一旦掌握了如何在Python中使用它们,就发现它们非常易于使用且功能强大。相信也会在本教程结束时有同样的感受。
在本Python教程中,将学习到Lambda函数在Python编程中的强大功能。将学习如何将它们与一些内置函数一起使用,以及了解普通函数和Lambda函数之间的区别。
注意:如果是Python新手,强烈推荐查看以下免费课程来提高技能:
Lambda函数是一个包含单个表达式的小型函数,它被编写在一行代码中。Lambda函数也可以作为匿名函数,它们不需要函数名或标识符。这在需要用较少的代码执行小任务时非常有用。还可以在需要将一个小函数传递给另一个函数时使用Lambda函数。别担心——很快就会详细讨论如何在Python中使用Lambda函数。Lambda函数最初由Alonzo Church在20世纪30年代引入。Church先生以Lambda演算和Church-Turing Thesis而闻名。Lambda函数在许多编程语言中都很实用,但将专注于在Python中的使用。在Python中,Lambda函数具有以下语法:
lambda y : x
这里的Lambda函数接受参数y,计算它,并返回x。Lambda函数由三部分组成:
关键字是必须的,并且必须是lambda,而参数和主体可以根据需求变化。可能会想,既然有其他普通函数,为什么还要选择Lambda函数。这是个好问题——让来详细说明。
Lambda函数使用lambda关键字定义。它们可以有任意数量的参数,但只有一个表达式。Lambda函数不能包含任何语句,并且返回一个函数对象,可以赋值给任何变量。它们通常用于单行表达式。普通函数使用def关键字创建。它们可以有任意数量的参数、任意数量的表达式和代码行。它们通常用于大块的代码。
IIFEs是立即调用的函数表达式。这些是在创建后立即执行的函数。IIFEs不需要显式调用来触发函数。在Python中,可以使用Lambda函数创建IIFEs。这里,创建了一个返回数字立方的IIFE。
a = (lambda x: x*x*x)(10)print(a)
太棒了!
是时候深入了解Python了!启动Jupyter Notebook,让了解一些Lambda函数的用例。可以使用Lambda函数与一些内置函数一起使用,比如filter函数,从可迭代对象中选择某些项,比如列表、数组、元组、字典等。还可以使用Lambda函数在列表推导式中。
import pandas as pddf=pd.DataFrame({ 'id':[1,2,3,4,5], 'name':['Jeremy','Frank','Janet','Ryan','Mary'], 'age':[20,25,15,10,30], 'income':[4000,7000,200,0,10000]})print(df)
Lambda With Apply
假设在年龄变量中有一个错误。记录的年龄相差3年。因此,要从Pandas数据框中移除这个错误,必须给每个人的年龄增加3年。可以使用Pandas中的apply()函数来实现。
df['age']=df.apply(lambda x: x['age']+3,axis=1)
可以使用apply()函数将Lambda函数应用于数据框的行和列。如果apply()函数中的axis参数是0,则Lambda函数应用于每列;如果是1,则函数应用于每行。apply()函数也可以直接应用于Pandas系列:
df['age']=df['age'].apply(lambda x: x+3)
df['category']=df['age'].apply(lambda x: 'Adult' if x>=18 else 'Child')