对Python中lambda方法的理解

您所在的位置:网站首页 python将字典的值取出来组成数组的方法 对Python中lambda方法的理解

对Python中lambda方法的理解

2024-03-28 23:37| 来源: 网络整理| 查看: 265

每次在任务中需要以词典的值排序,我都会百度一下解决,巧的是每次解决之后,我都会说下次一定不百度。嗯,“真香”。所以趁着这次在家,抽出时间好好理解一下其中看起来最复杂的lambda部分,到底是干什么的。

1. 简述lambda

     首先,lambda可以理解为函数式的另一种写法,这种写法没有函数名、不能写判断、循环和输出等,且定义之后不能共享使用。关于lambda和def的区别可以看文章1,总结得很好。

     其次,lambda的语法为: lambda 变量名: 对变量执行的语句(返回处理后的结果)

     在文章2中给出了lambda和def函数式的转化形式:

# lambda函数式 lambda x: x**2 # 效果等同于下面的def函数式 def fun(x): return x**2

     个人感觉lambda灵活的使用能减少省去一些只做简单处理的函数:

# 举个例子 # 原始代码 def fun1(x): return x+1 def fun2(x): return x**2 def fun3(x): return str(x) a = 1 print(fun3(fun2(fun1(a)))) # 其效果等同于 lis = [lambda x: x + 1, lambda x: x ** 2, lambda x: str(x)] print(lis[2](lis[1](lis[0](1))))

      文章2中说lambda可以接对象,如列表和词典。所以在对词典值进行排序的时候,我们会使用sorted()方法+lambda来代替直接循环词典的方式。

2 对词典排序的解析

      sorted(iterable, key, reverse)可以填三个参数:

第一个(iterable)是必填,为需要排序的对象;第二个(key)为选填,为指定的排序;第三个(reverse)为选填,为是否逆序,True为逆序,False为升序。默认False。

     对于词典key的排序很简单,直接使用sorted(dic)即可返回按key升序排列的列表结果。但对词典value的排序需要引入lambda,目的是获取词典中的value,从而辅助sorted()方法的选值。我们提供两种写法:

使用lambda x: dic[x] 获取词典中的值;引入dic.items(),通过items返回的列表套元组对象(形如:[('a',1), ('b',3)..]),使用 lambda x: x[1]获取value。

     最后将获取的词典的值设置为sorted()方法中第二个参数指定排序对象key的值,完成我们的按值排序。

     下面是一些实验和结果用于参考:

dic = {'b': 1, 'c': 2, 'a': 3} print(dic) # {'b': 1, 'c': 2, 'a': 3} print(sorted(dic)) # ['a', 'b', 'c'] print(sorted(dic, reverse=False)) # ['a', 'b', 'c'] print(sorted(dic, key=lambda x: dic[x], reverse=True)) # ['a', 'c', 'b'] print(sorted(dic.items(), key=lambda x: x[1], reverse=False)) # [('b', 1), ('c', 2), ('a', 3)] print(dic.items()) # dict_items([('b', 1), ('c', 2), ('a', 3)]) 3 总结

     一个lambda就是个小花式,可以代替某些“鸡肋def函数”,可以在以后的代码中活用起来。其次,sorted()方法排序,除了对单一列排序外,还能对多列元素排序(key的部分改写成lambda x: (x[1], x[0]),具体不赘述)。最后,弱弱的说一句,Pandas的sort_values()真香。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3