python基础之lambda表达式

一. 在排序中的应用

例:

>>> List=[{"name":"wan gang","age":22,"gender":"boy","score":583},
	{"name":"zhang mei","age":21,"gender":"girl","score":530},
	{"name":"li niu","age":22,"gender":"boy","score":581},
	{"name":"he meimei","age":23,"gender":"girl","score":509},
	{"name":"ma yun","age":26,"gender":"boy","score":492},
	{"name":"niu fang","age":25,"gender":"girl","score":614},
	{"name":"zhao yun","age":20,"gender":"boy","score":505}]
>>> List.sort(key=lambda x:x["score"]) #按照score进行排序
>>> List
    [{'name': 'ma yun', 'age': 26, 'gender': 'boy', 'score': 492}, 
    {'name': 'zhao yun', 'age': 20, 'gender': 'boy', 'score': 505}, 
    {'name': 'he meimei', 'age': 23, 'gender': 'girl', 'score': 509}, 
    {'name': 'zhang mei', 'age': 21, 'gender': 'girl', 'score': 530}, 
    {'name': 'li niu', 'age': 22, 'gender': 'boy', 'score': 581}, 
    {'name': 'wan gang', 'age': 22, 'gender': 'boy', 'score': 583}, 
    {'name': 'niu fang', 'age': 25, 'gender': 'girl', 'score': 614}]

二.作为实参传入函数,可以改变函数的功能

例:

>>> def test(a,b,func):
	sum=func(a,b)
	return sum

>>> a=3
>>> b=5
>>> test(a,b,lambda x,y:x+y)  #此时,整个lambda表达式作为实参,x,y依旧时lambda中的形参
8
>>> test(a,b,lambda x,y:x*y)  #lambda表达式不同,调用test得到的值不同
15
>>> test(a,b,lambda x,y:x*y+100)
115

关键字 eval 可以将字符串“lambda x,y:x+y"变为lambda表达式。

例:

>>> def test(a,b,func):
	sum=func(a,b)
	return sum
>>> a=3
>>> b=5
>>> func=input("输入lambda表达式:")
输入lambda表达式:lambda x,y:x-y
>>> func_new=eval(func)  #用eval将上面输入的字符串"lambda x,y:x-y"转换为lambda表达式
>>> test(a,b,func_new)
-2

猜你喜欢

转载自blog.csdn.net/Panda996/article/details/84790005