日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python list列表排序的两种方法及实例讲解

發布時間:2025/3/21 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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]
實例2:反向排序
1 2 3 4 >>>L?=?[2,3,1,4] >>>L.sort(reverse=True) >>>L >>>[4,3,2,1]
實例3:對第二個關鍵字排序?
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)]
實例4: 對第二個關鍵字排序?
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)]
實例5: 對第二個關鍵字排序?
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)]
實例6:(DSU方法:Decorate-Sort-Undercorate)
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)]
實例9:
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列表排序的两种方法及实例讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。