lambda详解

lambda详解

lambda的应用场景主要简化函数代码

def func(a,b):
	return a+b

a = func(1,2)
print(a)

结果为: 3

改写成lambda代码为:

func = lambda a,b: a+b

print(func)
print(func(1,2))

结果为:

<function <lambda> at 0x00000217F98EA9D8>
3

此时可以得出结论:前边写需要传入的参数,冒号后面写返回值。如果直接打印func得到的只有内存地址,所以应该像函数一样进行打印,lambda很好的简化了代码

也可以写为

print((lambda a,b: a+b)(1,2))

继续看例子:

func = lambda a,b,c=3: a+b+c

print(func(1,2))
print(func(1,2,6))
print(func(1,2,c=6))

结果为:

6
9
9

此时可以得出结论:c的值可以替换

当然了lambda也可以使用*args和**kwargs看例子

func = lambda *args: args
func1 = lambda **kwargs: kwargs

print(func(1,2,3))
print(func1(name="li"))

结果为

(1,2,3)
{'name': 'li'}

得出的结论为:*args得出的结果为一个元组,而**kwargs会得到一个字典

看例子:

func = lambda a, b: a if a > b else b
print(func(1, 2))

结果为:2
可以得出结论:如果a>b则返回a,a<b则返回b

接下来看一个lambda如何进行字典的排序:

students = [
 {'name': 'TOM', 'age': 20},
 {'name': 'ROSE', 'age': 19},
 {'name': 'Jack', 'age': 22} ]


students.sort(key=lambda a:a['age'])
print(students)

结果为:

[{'name': 'ROSE', 'age': 19}, {'name': 'TOM', 'age': 20}, {'name': 'Jack', 'age': 22}]

可以得出结论:此时要注意形参a指的是字典students

还有一种使用方法是结合python内置函数reduce使用

from functools import reduce

list1 = ['a','b','c']
list2 = [1,2,3,4]

res1 = reduce(lambda x,y : x + y, list1)
res2 = reduce(lambda x,y : x + y, list2)
res3 = reduce(lambda x,y : x * y, list2)


print(res1)
print(res2)
print(res3)
结果为:
	abc
	10
	24

列表中的值将会按照lambda中的预订运算方法进行计算

当然了,reduce函数还可以进行设置初始值

from functools import reduce

list1 = ['a','b','c']
list2 = [1,2,3,4]

res1 = reduce(lambda x,y : x + y, list1, 'd')
res2 = reduce(lambda x,y : x + y, list2, 3)
res3 = reduce(lambda x,y : x * y, list2, 3)


print(res1)
print(res2)
print(res3)
结果为:
	dabc
	13
	72
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值