python中的lambda功能是什么
lambda函数是一个匿名函数(即没有名称定义),可以接受任何数字的任何参数,但与普通函数不同,它仅计算并返回表达式
python中的lambda函数使用以下语法表达式:
lambda功能包括三个元素:
我们使用lambda函数仅计算一个简短的表达式(理想,一行),只计算一次,这意味着我们将来不会重复使用此函数。从本质上讲,我们将通过lambda函数作为参数将其传递给高-end函数(接受其他函数作为函数函数),例如python构建的 - 函数,例如filter(),map()或redaim()
如何在python的lambda功能中工作
让我们看看一个简单的lambda函数示例:
输出:
上面的lambda函数接受参数,增加1个,然后返回结果
它是具有def和返回关键字的常规函数的普通函数的更简单版本:
直到我们的lambda函数lambda x:x + 1已经创建了一个函数对象,而无需返回任何内容,因为我们没有为其参数x.LET首先提供任何值(参数)。这次我们得到了什么:
输出:
我们的lambda函数不会像我们期望的那样返回3,而是返回函数对象本身及其内存位置。可以看出,这不是调用lambda函数的正确方法。要将参数传递到lambda函数,执行并返回结果,我们应该使用以下语法:
输出:
尽管我们的lambda函数的参数不包含在括号中,但是当我们调用它时,我们将在lambda函数的整个结构中添加括号和我们传递给它的参数。
在上面的代码中要注意的另一件事是,使用lambda函数,我们可以立即执行该函数并在创建函数后立即接收结果。这是SO -so clated立即调用函数执行(或IIFE)
我们可以创建具有多个参数的lambda函数。在这种情况下,我们使用通勤分离函数来定义参数。当我们执行这样的lambda函数时,我们以相同的顺序列出了相应的参数,并将它们分隔为逗号:
输出:
您还可以使用lambda函数执行有条件的操作。以下是简单的IF-EEE函数的lambda模拟:
输出:
如果有多种条件(如果是身体-...- else),我们必须嵌套它们:
输出:
但是上面的写作使代码难以阅读
在这种情况下,具有IF-ELIF -...-其他条件的普通函数将比Lambda函数更好。
输出:
尽管以上功能比相应的lambda函数添加了更多的行,但读取更易于阅读
我们可以将lambda函数分配到变量,然后将变量称为正常函数:
输出:
但是根据PEP 8样式规则的Python代码规则,这是一种不好的方法
使用分配语句的使用消除了Lambda表达式与显式DEF语句相比所能提供的唯一好处(也就是说,它可以嵌入较大的表达式中)
因此,如果我们确实需要存储一个供进一步使用的函数,我们更好地定义了等效的普通函数,而不是将lambda函数分配给变量
python应用程序中的lambda功能
带有滤波器功能的lambda
Python中的Filter()函数需要两个参数:
定义过滤条件的功能
在其上运行的可用对象
运行此功能,我们得到一个过滤对象:
输出:
为了从过滤器对象获得新的迭代器,原始迭代器中的所有项目都符合预定义的条件,我们需要将过滤器对象传递到Python标准库的相应函数:list(),元组(),set(),frozenset()或排序()
让我们过滤一个数字列表,只选择大于10的数字,然后返回促销的排序列表:
输出:
我们不必创建与原始对象相同类型的新迭代对象。此外,我们可以将此操作的结果存储在变量中:
输出:
带有map()函数的lambda
我们使用Python中的Map()函数在每个迭代上执行特定操作。它的语法与filter():要执行的函数和适用于函数的迭代对象相同。
MAP()函数返回地图对象。我们可以通过将对象传递到相应的python函数:list(),tuple(),set(),frozenset()或sorted()()来获得新的迭代。
像filter()函数一样,我们可以从映射对象的原始类型中提取不同类型的迭代对象并将其分配给变量。
以下是使用Map()函数将列表中的每个项目乘以10的示例,并将映射值分配给变量TPL的成本组输出:
输出:
映射()和filter()函数之间的一个重要区别是,第一个函数始终返回与原始函数相同的长度。因此,由于也可以使用PANDAS系列对象在数据框列上创建一个新列:
输出:
当然,要在上述情况下获得相同的结果,您也可以使用apply()函数:
输出:
我们还可以根据某些条件为另一列创建一个新的数据框列。对于以下代码,我们可以交换映射()或apply()函数:
输出:
带有reald()函数的lambda
RELAD()函数与函数python模块有关。它的工作方法如下:
输出:
上面的代码显示了我们使用redain()函数计算列表总和的角色
应该注意的是,RELAD()函数始终需要具有两个参数的lambda函数,我们必须首先从functools python模块导入它
Python中Lambda功能的优点和缺点
优势
缺点
总结
总而言之,我们讨论了Python中定义并使用Lambda功能的许多方面:
以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享
原始:https://juejin.cn/post/7102655992860508168