python中lambda函数如何理解

发布时间 2023-11-28 13:03:24作者: 秒秒开心

一:问题

python中lambda函数如何理解?

 

二:回答

如下所示:

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

data = lambda a,b:a+b  

if __name__ == "__main__":
	print(add(3,4))
	print(data(3,4))

>>> 运行结果如下:
>>> 7
>>> 7

这里lambda函数,可以这样理解:
lambda 替代了上面的def add,并去掉了return,也就是lambda 后面直接跟上了传参的参数,冒号后面跟着的是函数要实现的操作,操作完成会直接返回结果

 

三:拓展

按照上面的思路:对data数据进行过滤性别为女性,按照年龄从大到小排序

data = [{"name":"bob","sex":"male","age":20},{"name":"linda","sex":"female","age":35},  
        {"name":"soniar","sex":"female","age":28},{"name":"jane","sex":"female","age":40}]  
  
filter_data = list(filter(lambda item: item["sex"]=="female",data))  
filter_data.sort(key=lambda item:item["age"],reverse=True)  
print(filter_data)

>>> 程序运行结果如下:
>>> [{'name': 'jane', 'sex': 'female', 'age': 40}, {'name': 'linda', 'sex': 'female', 'age': 35}, {'name': 'soniar', 'sex': 'female', 'age': 28}]

上面lambda item: item["sex"] == "female",即遍历data列表中每一项,当符号性别为女性这个条件时则返回,得到filter_data的数据为除去了性别为男性的列表数据
然后用sort对filter_data数据进行排序,key=lambda item:item["age"],代表以age的值为排序对象进行排序,最终filter_data即为筛选了性别为女性,且按年龄降序排序的结果。