python list列表排序的两种方法及实例讲解
生活随笔
收集整理的這篇文章主要介紹了
python list列表排序的两种方法及实例讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對List進行排序,Python提供了兩個方法
方法1.用List的內建函數list.sort進行排序
list.sort(func=None, key=None, reverse=False)?
Python實例:
| 1 2 3 4 5 6 | >>>?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實例:
| 1 2 3 4 5 | >>>?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 2 3 4 | >>>L?=?[2,3,1,4] >>>L.sort() >>>L >>>[1,2,3,4] |
| 1 2 3 4 | >>>L?=?[2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1] |
| 1 2 3 4 | >>>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)] |
| 1 2 3 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)] |
| 1 2 3 4 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)] |
| 1 2 3 4 5 6 | >>>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 < DSU < key
通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當?
多關鍵字比較排序:
實例7:| 1 2 3 4 | >>>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:| 1 2 3 4 | >>>?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)] |
| 1 2 3 4 | >>>?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是的比較從左到右比較的,比較完第一個,如果相等,比較第二個
from:?http://blog.chinaunix.net/uid-20775448-id-4222915.html
總結
以上是生活随笔為你收集整理的python list列表排序的两种方法及实例讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python导入模块(包)的两种方式 T
- 下一篇: 160家优秀国外技术公司博客