python中lambda函数如何理解
一:问题
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即为筛选了性别为女性,且按年龄降序排序的结果。