python中列表排序方法,python函数排序输出
Python排序函数完美体现了Python语言的简单性。对于List对象,我们可以直接调用sort()函数(这里调用 method 更合适)进行排序,而对于其他迭代对象(比如set、dict),我们可以使用更灵活的sort()函数。
一、List的sort()函数
Python builtins.py源文件将sort()函数定义如下
定义排序(self,key=None,reverse=False):
L.sort(key=None,reverse=False) - None -稳定排序*就地*
及格
可以看到,sort()函数没有返回值,有两个参数。键表示行基础的功能;反转是指需要反转列表。默认值为False,表示升序。如果设置为True,则表示降序。
Sort()的用法如下
L=[1,2,7,4,3]
L.sort()
打印(左)
#[1, 2, 3, 4, 7]
让我们添加一些参数来看看,比如降序排序:
L=[1,2,7,4,3]
L.sort(reverse=True)
打印(左)
#[7, 4, 3, 2, 1]
例如,我们想按键降序排序,这里我们使用匿名函数lambda:
L=[1,2,7,4,3]
l . sort(key=lambda x:x *(1))
打印(左)
#[7, 4, 3, 2, 1]
当然,key还有很多用途。我们可以将其设置为内置函数或自定义函数,如绝对值函数:
L=[-1,2,-7,4,3]
L.sort(key=abs)
打印(左)
#[-1, 2, 3, 4, -7]
Python3对key还有一个支持,就是通过functools模块的cmp_to_key函数,将传统的cmp函数改为key。这种方法类似于lambda函数,但是在比较的逻辑比较复杂的情况下更清晰,更容易维护。
从功能工具导入cmp_to_key
L=[-1,2,-7,4,3]
定义cmp(a,b):
如果abs(a) abs(b):
返回-1
否则:
返回1
L.sort(key=cmp_to_key(cmp))
打印(左)
二。已排序()
Sorted函数比sort()函数更通用,sort()函数只能对列表进行排序。官方文件对此有详细解释:
已排序(iterable,*,key=无,reverse=False)
从iterable中的项目返回一个新的排序列表。
sorted()的返回值属于列表类型。参数iterable指示一个iterable对象;*表示位置参数结束,后面的参数必须用关键字指定;reverse参数的用法和sort()完全一样。
Sorted()的用法如下:
L=[1,2,7,4,3]
L1=已排序(L)
印刷品(L1)
#[1, 2, 3, 4, 7]
reverse和key的用法就不单独说了。可以参考sort()。如果我们要排序的对象是一个集合,那么用法与列表排序相同:
S={1,2,7,4,3}
S1=已排序
印刷品(S1)
#[1, 2, 3, 4, 7]
注意这个排序对象是set对象,结果是list对象(set对象没有顺序)。如果我们想实现一个更复杂的排序呢?例如,根据键值对字典进行排序,排序结果是键值对列表:
Dict={a:2, b:3, c:7, d:4, e:1}
L=sorted(Dict.items(),key=lambda x : x[1])
打印(左)
#[(e ,1),( a ,2),( b ,3),( d ,4),( c ,7)]
给出Leetcode上的最后一个问题(按字符出现频率排序):
给定一个字符串,请将字符串中的字符按出现频率降序排列。
输入:
“树”
输出:
额尔特
解释:
e出现了两次,R和T都只出现了一次。因此,“e”必须出现在“r”和“t”之前。此外,‘eetr’也是一个有效答案。
通过使用排序函数,代码清晰易读:
定义频率排序:
d={}
对于s中的I:
d[i]=d.get(i,0) 1
L=已排序(d.keys(),key=lambda x: d[x],reverse=True)
s=
对于L中的I:
s=i * d[i]
返回s
注意,这里的d.keys()生成一个由键组成的iterable对象,而前面代码中的Dict.items()生成一个由键值对组成的iterable对象(这是一个Tuple对象)。
关于Python排序函数的用法,本文就讲到这里。关于Python排序函数用法的更多信息,请搜索随机开发网之前的文章或者继续浏览下面的相关文章。希望你以后能支持随机开发网!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。