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

歡迎訪問 生活随笔!

生活随笔

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

python

Python: How to Sort a List

發布時間:2025/3/21 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python: How to Sort a List 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

這兩種方法使用起來差不多,以第一種為例進行講解:
從Python2.4開始,sort方法有了三個可選的參數,Python Library Reference里是這樣描述的
cmp: cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: "cmp=lambda x,y: cmp(x.lower(), y.lower())"

key: key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:
reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed. In general, the key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

以下是sort的具體實例。

實例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',2),('a',1),('c',3),('d',4)]
>>>L.sort(cmp = lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例4:(推薦1)
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(key = lambda x: x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例5:(推薦2)
>>>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 < DSU < key
通過實驗比較,方法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:(推薦3)
>>> 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:(推薦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/u2/71210/showart_1888878.html

?

總結

以上是生活随笔為你收集整理的Python: How to Sort a List的全部內容,希望文章能夠幫你解決所遇到的問題。

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