如何在python中对列表套列表进行排序_如何实现对Python中列表的排序?
對List進行排序,Python提供了兩個方法
方法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)進行排序(從2.4開始)
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:正向排序
實例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(lambda?x,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=lambda?x:x[1])
>>>L
>>>[('a',?1),?('c',?3),?('d',?4),?('b',?6)]
實例5: 對第二個關鍵字排序>>>L?=?[('b',2),('a',1),('c',3),('d',4)]
>>>import?operator
>>>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)?for?i,x?in?enumerate(L)]?#i?can?confirm?the?stable?sort
>>>A.sort()
>>>L?=?[s[2]?for?s?in?A]
>>>L
>>>[('a',?1),?('b',?2),?('c',?3),?('d',?4)]
以上給出了6中對List排序的方法,其中實例3.4.5.6能起到對以List item中的某一項
為比較關鍵字進行排序.
效率比較:cmp?
通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當
多關鍵字比較排序:
實例7:>>>L?=?[('d',2),('a',4),('b',3),('c',2)]
>>>?L.sort(key=lambda?x: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=lambda?x:(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中列表的排序?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: olap与mysql_MySQL与OLA
- 下一篇: matlabrobert锐化_Matla