Python list排序(方法、实例)
发布时间:2025-04-06 15:41:29

Python为List排序提供了两种方法:
方法1、List用List内建函数.sort排序
list.sort(func=None,key=None,reverse=False)
Python实例:
>>>list=[2,5,8,9,3] >>>list [2,5,8,9,3] >>>list.sort() >>>list [2,3,5,8,9]
方法2、序列类型函数sorted(list)进行排序
Python实例:
>>>list=[2,5,8,9,3] >>>list [2,5,8,9,3] >>>sorted(list) [2,3,5,8,9]
两种方法的区别:
sorted(list)返回一个对象,可以用作表达式。原来的list是不变的,生成一个新的排序list对象。
list.sort() 改变原来的list,不会返回对象。
其他sort实例:
实例1:正向排序
>>>L=[2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4]
实例2:反向排序
>>>L=[2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1]
实例3:对第二个关键字进行排序
>>>L=[('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambdax,y:cmp(x[1],y[1]))
>>>L
>>>[('a',1),('c',3),('d',4),('b',6)]实例4:对第二个关键字进行排序
>>>L=[('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambdax:x[1])
>>>L
>>>[('a',1),('c',3),('d',4),('b',6)]实例5:对第二个关键字进行排序
>>>L=[('b',2),('a',1),('c',3),('d',4)]
>>>importoperator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a',1),('b',2),('c',3),('d',4)]实例6:(DSU方法:Decorate-Sort-Undercorate)
>>>L=[('b',2),('a',1),('c',3),('d',4)]
>>>A=[(x[1],i,x)fori,xinenumerate(L)]#icanconfirmthestablesort
>>>A.sort()
>>>L=[s[2]forsinA]
>>>L
>>>[('a',1),('b',2),('c',3),('d',4)]以上给出了6中List排名的方法,其中实例为3.4.5.6能起到Listtt的作用 item中的一个项目是对比较关键字进行排序。
效率比较:
cmp<DSU<key
通过实验比较,方法3比方法6慢,方法6比方法4慢,方法4和方法5基本相同。
多关键词比较排序:
实例7:
>>>L=[('d',2),('a',4),('b',3),('c',2)]
>>>L.sort(key=lambdax:x[1])
>>>L
>>>[('d',2),('c',2),('b',3),('a',4)]我们可以看到,此时排序的L只是按照第二个关键字排序的。如果我们想用第二个关键字排序,然后用第一个关键字排序呢?有两种方法。
实例8:
>>>L=[('d',2),('a',4),('b',3),('c',2)]
>>>L.sort(key=lambdax:(x[1],x[0]))
>>>L
>>>[('c',2),('d',2),('b',3),('a',4)]实例9:
>>>L=[('d',2),('a',4),('b',3),('c',2)]
>>>L.sort(key=operator.itemgetter(1,0))
>>>L
>>>[('c',2),('d',2),('b',3),('a',4)]为什么实例8能工作?原因是tuple是从左到右进行比较,比较第一个,如果相等,比较第二个。
python学习网,大量免费python视频教程,欢迎在线学习!
本文转自:https://www.jianshu.com/p/d2e5bd808032
