python list列表排序的两种方法及实例讲解
對List進(jìn)行排序,Python提供了兩個(gè)方法
方法1.用List的內(nèi)建函數(shù)list.sort進(jìn)行排序
list.sort(func=None, key=None, reverse=False)?
Python實(shí)例:
| 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.用序列類型函數(shù)sorted(list)進(jìn)行排序(從2.4開始)
Python實(shí)例:
| 1 2 3 4 5 | >>>?list?=?[2,5,8,9,3]?? >>>?list?? [2,5,8,9,3]?? >>>?sorted(list)?? [2,?3,?5,?8,?9] |
兩種方法的區(qū)別:
sorted(list)返回一個(gè)對象,可以用作表達(dá)式。原來的list不變,生成一個(gè)新的排好序的list對象。
list.sort() 不會返回對象,改變原有的list。
其他sort的實(shí)例:
實(shí)例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排序的方法,其中實(shí)例3.4.5.6能起到對以List item中的某一項(xiàng)
為比較關(guān)鍵字進(jìn)行排序.
效率比較:
cmp < DSU < key
通過實(shí)驗(yàn)比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當(dāng)?
多關(guān)鍵字比較排序:
實(shí)例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)] |
我們看到,此時(shí)排序過的L是僅僅按照第二個(gè)關(guān)鍵字來排的,
如果我們想用第二個(gè)關(guān)鍵字排過序后再用第一個(gè)關(guān)鍵字進(jìn)行排序呢?有兩種方法?
實(shí)例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)] |
為什么實(shí)例8能夠工作呢?原因在于tuple是的比較從左到右比較的,比較完第一個(gè),如果相等,比較第二個(gè)
from:?http://blog.chinaunix.net/uid-20775448-id-4222915.html
總結(jié)
以上是生活随笔為你收集整理的python list列表排序的两种方法及实例讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python导入模块(包)的两种方式 T
- 下一篇: 利用python进行识别相似图片(二)