一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python list排序的兩種方法及實例講解

python list排序的兩種方法及實例講解

2020-09-24 14:32zhbnx Python

本文主要介紹了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是的比較從左到右比較的,比較完第一個,如果相等,比較第二個

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!

原文鏈接:http://blog.chinaunix.net/uid-20775448-id-4222915.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧美专区精品伊人久久 | 国产盗摄美女嘘嘘视频 | 美女被吸乳老师羞羞漫画 | 99精品在线视频 | 日韩综合网 | 99re7在线精品免费视频 | 色综合亚洲精品激情狠狠 | 日本亚欧乱色视频在线观看 | 色批网站www| 人人人人人看碰人人免费 | 久久亚洲高清观看 | 美女奶口隐私免费视频网站 | 天天插综合网 | 亚洲天堂精品视频 | 欧美在线观看视频一区 | 韩国久久精品 | 日韩在线一区二区三区 | 久久99精品国产自在自线 | 岛国在线播放v片免费 | 亚洲天堂视频在线播放 | 色老板在线播放 | 亚洲国产精品自在在线观看 | 欧美人shou交在线播放 | 国产成人综合亚洲一区 | 欧亚专线欧洲m码可遇不可求 | 国产成人精品本亚洲 | 欧美日韩一区二区三区在线观看 | 欧美一区二区三区在线观看不卡 | 亚洲网色 | 免费一级生活片 | 色综合视频在线观看 | 天作谜案免费完整版在线观看 | 男gay男gay男gay野外 | 污文啊好棒棒啊好了 | 久久电影精品久久99久久 | 果冻传媒ⅹxxxxxhd | 俄罗斯处女| a v在线男人的天堂观看免费 | 黑人双渗透 | 成人免费视屏 | xxxx18日本视频xxxxx |