在Python语言中除了def语句用来定义函数以外,还能够使用匿名函数lambda,它是Python一种生成函数对象的表达式形式。匿名函数一般是建立了能够被调用的函数,它返回了函数,而并无将这个函数命名。lambda有时被叫作匿名函数也就是这个缘由,须要一个函数,又不想动脑筋去想名字,这就是匿名函数。express
语法:函数
lambda函数的语法只包含一个语句: lambda arg1,arg2,.....argn:expressionspa
lambda 能够无参数,也能够多参数,可是语句只有一个code
列表的排列函数中:orm
list_1 = [{"name":"wang","age":10},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}] infors.sort(key=lambda x:x['age']) #根据age对字典排序 print(infors) 输出: [{'name': 'wang', 'age': 10}, {'name': 'banzhang', 'age': 10}, {'name': 'xiaoming', 'age': 20}]
list_2=['hjkgfdk','sdfrgr','gregth','rewfrwrg','htht','qwqw']
list_2.sort(key=lambda x:x[2])
print(list_2)
输出
['gregth', 'sdfrgr', 'htht', 'hjkgfdk', 'qwqw', 'rewfrwrg']
用在过滤函数中,指定过滤列表元素的条件:对象
filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 输出 > [3, 6, 9]
reduce()函数,在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它如今被放置在 fucntools 模块里,若是想要使用它,则须要经过引入 functools 模块来调用 reduce() 函数: from functools import reduceblog
>>>def add(x, y) : # 两数相加 ... return x + y ... >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5 15 >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
15
用在map()函数中排序
map(lambda x: x+1, [1, 2,3]) > [2, 3, 4]
做为一个函数的参数io
def transform(fun,*arg):
return fun(*arg)
print(transform(lambda x,y:x*y,1,8))
输出:
8
返回一个三元表达式:form