sort&sorted

一、區別:

  1. sort()是可變對象(字典、列表)的方法,無參數和返回值,會改變可變對象,不可變對象如果調用會返回一個異常
  2. sorted()是python的內置函數,sorted()函數需要一個參數(參數可以是列表、字典、元組、字符串等所有的可迭代序列),返回一個以列表為容器的返回值,如果字典將返回鍵的列表。

二、用法

  1. sort用法
iterable.sort(cmp[, key[, reverse]])

其中:
a. cmp是函數,用于自定義排序的比較方法
b. key為一個函數,用于指定在待排序數據的哪一項上進行排序
c. reverse用于指定升序/降序
示例:

 >>> a=['a','s','d','s1']
>>> a.sort()
>>> a
['a', 'd', 's', 's1']

使用key:

>>> s=[('merry',20),('zhou',18)]
>>> s.sort(key=lambda d: d[0])
>>> s
[('merry', 20), ('zhou', 18)]
>>> s.sort(key=lambda d: d[1])
>>> s
[('zhou', 18), ('merry', 20)]
  1. sorted用法
sorted(iterable[, cmp[, key[, reverse]]])

其中cmp、key、reverse含義與sort中相同
示例:

>>> sorted([2,1,4,3,5])
[1, 2, 3, 4, 5]
>>> sorted("I am 21")
[' ', ' ', '1', '2', 'I', 'a', 'm']
>>> sorted("I am 21".split())
['21', 'I', 'am']

key用法示例:

>>> sorted("I am 21".split(),key=str.lower)
['21', 'am', 'I']
>>> sorted({'c':2,'d':1,'a':5})
['a', 'c', 'd']
>>> data={'c':2,'d':1,'a':5}
>>> sorted(data,key=lambda d:data[d])
['d', 'c', 'a']

降序:

>>> sorted(data,key=lambda d:data[d],reverse=True)
['a', 'c', 'd']

<b>sort()與sorted()可以與opertator的itemgetter等方法結合, 待補充示例</b>
三、 穩定性
從python2.2開始,排序都被保證了穩定性。

s=[('merry',18),('zhou',20),('merry',16)]
>>> s
[('merry', 18), ('zhou', 20), ('merry', 16)]
>>> s.sort(key=lambda d:d[0])
>>> s
[('merry', 18), ('merry', 16), ('zhou', 20)]
>>> s=[('merry',18),('zhou',20),('merry',16)]
>>> sorted(s,key=lambda d:d[0])
[('merry', 18), ('merry', 16), ('zhou', 20)]

四、參考

  1. Python中的sort()方法使用基礎
  2. python sort、sorted高級排序技巧
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容