Python 匿名函数与lambda

267 阅读1分钟

lambda 用于定义匿名函数

lambda x, y: x + y

lambda 是在定义一个匿名函数的关键字,返回改函数的内存地址。
主要用于临时调用一次的场景,更多的是将匿名与其他函数配合使用。
冒号前面的是参数,冒号后面的是返回值。

等同于

def func(x, y):
    return x + y

使用场景

需求1

找出年龄最大的人

age = {"tom": 44, "jerry": 43, "Vooce": 23, "grandmother": 88}
re = max(age, key=lambda k:age[k])

在线运行:replit.com/@Vooce/lamb…

需求2

按照年龄从小到大排序

age = {"tom": 44, "jerry": 43, "Vooce": 23, "grandmother": 88}
re = sorted(age, key=lambda k:age[k])

在线运行:replit.com/@Vooce/lamb…

需求3

给每个人的名字前加上 Dear
有两种方案:一种方案是使用迭代器

l = ["tom", "jerry", "Vooce", "grandmother"]
re = ["Dear "+name for name in l]
print(re)

另一种方案是使用内置函数 map.
Python3 中,map() 函数返回一个生成器,需要加上 list 遍历转换为列表.

l = ["tom", "jerry", "Vooce", "grandmother"]
map_re = list(map(lambda name: "Dear "+name, l))
print(map_re) 

在线运行:replit.com/@Vooce/lamb…

其他调用匿名函数的方式:

方法1

res = (lambda x, y: x + y)(1, 2)
print(res) # 3

方法2(不推荐,违反匿名函数的原则)

func = lambda x, y: x + y
re = func(1, 2)
print(1, 2)