您好,登录后才能下订单哦!
今天小编给大家分享一下 Python匿名函数lambda怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
在 Python 中,说到函数,大家都很容易想到用 def 关键字来声明一个函数:
def Hello(): # function body
然后我们可以在添加由圆括号括起来的参数列表。函数体内可能有很多行代码,里面有尽可能多的语句和表达式。
除了 def 语句定义函数以外,还有一种生成函数对象的表达式形式: lambda 表达式,这个表达式创建了一个能够随时调用的函数。
有时声明一个函数只有一条语句,比如:
def square(x): return x*2
(没有lambda 函数返回函数本身而不是将其赋值给一个变量名。所以它也被称为匿名函数函数名)。 lambda 的一般形式是关键字 lambda 后面跟上一个或者多个参数,之后是一个冒号,再之后是一个表达式:
lambda argument1, argument2, ... argumentN: expression using argument
lambda 表达式所返回的函数对象与 def 创建并赋值后的函数对象工作起来是完全一样。一个 lambda
函数可以有尽可能多的参数,但函数体必须是一个表达式。
lambda 只能包含一个表达式,通常用作内联函数的定义,或者用作推迟一些代码的执行。
再来看上面的平方的例子:
def square(x): return x*x a_list = [1, 2, 3, 4, 5] aa_list = list(map(square, a_list)) print(aa_list) # [1, 4, 9, 16, 25]
上述代码就是 lambda 函数使用的好地方,使用更少的代码行,并且可以避免创建仅使用一次的命名函数(然后必须存储在内存中)。您可以编写一个将其参数平方的 lambda 函数: lambda x: x*2 ,并将其与 map 函数一起使用以将列表中的所有元素进行平方运算:
a_list = [1, 2, 3, 4, 5, 6] aa_list = list(map(lambda x: x*2, a_list)) print(aa_list) # [2, 4, 6, 8, 10, 12]
如果在短时间需要一个小函数,可以使用 lambda 函数——例如作为 map 或 filter 等高阶函数的参数,可以我们利用 lambda 来筛选偶数:
a_list = [1, 2, 3, 4, 5, 6] aa_list = list(filter(lambda x: x%2==0, a_list)) print(aa_list) # [2, 4, 6]
lambda 函数是在使用它的地方定义的,这样内存中就没有命名函数。如果只在一个地方使用了一个函数,那么使用 lambda 函数来避免混乱是有意义的。
还可以从函数返回 lambda 函数。如果您需要创建多个乘以数字的函数,例如加倍或三倍等,lambda 可以提供帮助。您可以创建一个函数 multiplyBy
,而不是创建多个函数,如下所示,然后使用不同的参数多次调用此函数以创建双倍、三倍等函数:
def muliplyBy (n): return lambda x: x*n double = multiplyBy(2) triple = muliplyBy(3) times10 = multiplyBy(10)
lambda 函数从父函数获取值 n,因此在 double 中 n 的值为 2,在三倍中为 3,在 times10 中为 10。现在使用参数调用这些函数将乘以该数字。
double(6) > 12 triple(5) > 15 times10(12) > 120
如果您在这里没有使用 lambda 函数,则需要在 multiplyBy
中定义一个不同的函数,
如下所示:
def muliplyBy (x): def temp (n): return x*n return temp
使用 lambda
函数使用一半的行并使其更具可读性。
以上就是“ Python匿名函数lambda怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。