python lambda函数的用法(一文了解lambda函数)

 分类:IT知识时间:2022-09-21 07:30:04点击:

Python的lambda函数用法介绍,lambda函数是一种小的匿名函数。Python要求lambda只能有一个表达式。因此lambda的语法为:

lambda为关键字,arguments为参数,lambda的参数可以为0个或任意多个,expression为函数体,lambda限制要求只能有一个表达式,lambda返回值是一个函数对象。

下面我们通过实例看一下lambda的基本用法。

程序的第4行,我们定义了一个lambda匿名函数,它会返回参数x的2倍,函数返回一个函数对象,并赋值给func1。程序的第6行,我们调用函数对象func1,传入实参3,则函数进行计算,即3*2=6,这时print将打印结果6,如下图所示。

lambda也可以接受任意数量的参数。程序的第8行,我们设计了一个传入2个参数的lambda函数,其功能是计算两个参数的和。形参分别为x和y,程序的第10行,我们传入实参1和5,最后会得到6,即6=1+5。

再来一个复杂一些的。与函数嵌套类似,lambda函数在所包含的作用域内,也可以引用变量,程序的第13行,我们定义了一个函数func3,它的功能是返回参数x与一个未知数y的和。这个所谓的"未知数"是什么意思呢?我们通过一个实例来看一下它的运行机制。首先,我们使用func3(4)调用函数,这时参数x的值是4,而在调用 func3时,函数func3是不知道y是多少的,也就是说在定义和调用func3时,y都是一个未知数。当我们执行func4(5)时,程序实际上是进行了lambda y:y+4的操作,(因为之前调用func3时x=4),而此时y=5,所以最后会返回5+4=9。

lambda经常会与map,filter,reduce,sorted之类的函数配合使用。接下来我们通过sorted函数的实例,进行一下演示。

在这个程序里,我假定有一个branch_ind的列表,里面包含了一个元组,每个元组分别由(分行名称,贷款发放金额)组成,作为明年各分行的工作指标。现在我们要对各分行的指标进行一下排序。

程序的第4行调用了sorted函数,对branch_ind列表进行排序,key是指定进行比较时所用的参数,在本例中,我们是使用元组的第2个参数进行比较,即x[1]。通过lambda函数,我们将元组的第2个参数返回给sorted进行排序,在排序完成后,sorted将返回一个排好序的新列表。

程序的运行效果如下:

我们可以看到,按照贷款发放指标17 < 20 < 30 < 79 < 100,sorted函数对列表进行了排序。

我使用的环境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5

除注明外的文章,均为来源:老汤博客,转载请保留本文地址!
原文地址: