-
- 匿名函数
- 返回两参数之和:
lambda a, b: a+b - 语法:lambda [arg1 [,arg2,.....argn]]:expression
冒号前是参数,冒号后是表达式,返回表达式的值 - 直接传参:
(lambda x, y: x if x>y else y)(1, 2) - 函数嵌套匿名函数:
def add(n):
return lambda x: x + n
f = add(1)
print(f(2))
1的参数是add方法的,2是匿名函数参数,函数嵌套匿名函数,函数方法返回的是一个函数,需要带匿名函数的参数才能正常返回值 - 列表和匿名函数结合使用:
L = [lambda x: x ** 2, lambda x: x ** 3, lambda x: x ** 4]
for x in L:
print(x(2))
也可以通过print L[0](2)调用 - 与字典结合使用:
dic = {'A': lambda x: x * 2, 'B': lambda x: x * 4, 'C': lambda x: x * 6}
for key, value in dic.items():
print(value(2)) - 与map结合使用,对序列进行函数处理--返回值为迭代器,需用list等显示出来
map(function, iterable, ...)
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = list(map(lambda x, y: x + y, a, b))
print(c) - filter与匿名函数联合使用:
filter(function,iterable) 前者过滤函数,后者参数序列
print(list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5, 6]))) - sorted与匿名函数结合使用: 多个元素排序
info = [('James', 20), ('Alies', 20), ('Wendy', 25)]
a = sorted(info, key=lambda age: (age[1], age[0])) # 按照第二个元素,然后再按第一个元素排序
print(a) - reduce与匿名函数结合使用
reduce(lambda x, y: x+y, [1,2,3,4,5]) - 注意事项:
1、可以使用for…in…if来完成的,坚决不用lambda。
2、lambda内不要包含循环,如果有,应定义函数来完成
lambda 是为了减少单行函数的定义而存在的。
3、lambda函数不能换行
- 返回两参数之和:
- 匿名函数