Python lambda函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python lambda函数相关的知识,希望对你有一定的参考价值。

参考技术A

在Python中,lambda函数是使用 lambda表达式 定义的单行 匿名函数 。它常用于将函数作为参数传递等场景。

lambda函数具有 lambda <参数> : <表达式> 的格式。它没有函数名,函数体只有一条语句,这条语句的结果就是该函数的返回值。

如下的lambda函数被赋值给变量 func :

等价于如下普通定义的函数 func(x, y, z) :

这样定义的lambda函数,调用形式与普通定义的函数一样:

运行结果:

python学习:函数---匿名函数 lambda

语法:
    lambda [arg1 [,arg2,.....argn]]:expression

说明:
    lambda 只是一个表达式,函数体比 def 简单很多。
    lambda 主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
    lambda 可以有多个参数,参数之间用逗号隔开。
    lambda 函数只能写一行。

例题:

func = lambda x:(x[0],x[2])
print(func(hello))  # (‘h‘, ‘l‘)

func = lambda x,y: x if x > y else y
print(func(3,100))  # 100

dic = {k1:20,k2:100,k3:40}
print(max(dic))  # k3
print(max(dic,key=lambda k:dic[k]))  # k2

ret = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(ret)) # [1, 4, 9, 16, 25]

# 提供了两个列表,对相同位置的列表数据进行相加
ret = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8])
print(list(ret)) #[3, 7, 11, 15, 19]

ret = sorted([30,6,-10,88,-20,22], key=lambda x: x*-1)
print(list(ret)) # [88, 30, 22, 6, -10, -20]

ret = filter(lambda x:x<0,[30,6,-10,88,-20,22])
print(list(ret)) # [-10, -20]

# 两个元组((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),请使用匿名函数生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}]
t1 = ((a),(b))
t2 = ((c),(d))
#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#答案三
print([{i:j} for i,j in zip(t1,t2)])

# 数组/字典的排序
array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)

# 先按照成绩降序排序,相同成绩的按照名字升序排序
array = [{name:alice, score:38}, {name:bob, score:18}, {name:darl, score:28}, {name:christ, score:28}]
l = sorted(array, key=lambda x:(-x[score], x[name]))
print(l)

def multipliers():
    return [lambda x:i*x for i in range(4)] # 相当于返回了四个lambda x:i*x,return的时候i=3
print([m(2) for m in multipliers()]) # [6, 6, 6, 6]

def multipliers():
    return (lambda x:i*x for i in range(4)) # 生成器表达式,返回的是一个生成器,调用一次return才执行一次
print([m(2) for m in multipliers()]) # [0, 2, 4, 6]

以上是关于Python lambda函数的主要内容,如果未能解决你的问题,请参考以下文章

Python--lambda函数

python学习:函数---匿名函数 lambda

python中的lambda函数

Python | Lambda 函数

《转》Python学习(19)-python函数-关于lambda

Python-lambda函数,map函数,filter函数