Python list sort方法的具體使用

描述

list.sort()方法是Python的列表方法,用於對原列表進行排序。list.sort()方法沒有任何返回值。

語法

list.sort(key=function, reverse=boolean)
名稱 說明 備註
list 列表名稱
key=function 列表元素權值參數 可省略的參數。省略時列表排序不考慮元素的權值
reverse=boolean 排序規則參數 可省略的參數。省略時reverse默認值False

返回值:函數在原有列表上排序並返回排序後的列表

使用示例

1. 所有參數都省略

當sort函數的所有參數都省略的情況下,對原列表進行升序排序:

1. 如果原列表是數字,則按照數字的大小排序;

2. 如果原列表是字符串,則會按照字母表順序排列.

>>> _list_a = [1, 34, 21, 4]
>>> _list_a.sort()    #對元素是數字的列表進行排序
>>> _list_a
[1, 4, 21, 34]
 
>>> _list_b = ['Huawei', 'Chinasoft', 'CASC', 'Alibaba', 'SoftStone', 'Tencent']
>>> _list_b.sort()    #對元素是字符串的列表進行排序
>>> _list_b
['Alibaba', 'CASC', 'Chinasoft', 'Huawei', 'SoftStone', 'Tencent']

2. 指定key參數

    key參數指的是為列表的元素一一標記權值,並按照元素所對應的權值來排序元素。key=函數名,該函數的返回值作為元素的權值大小。

例如,使用字符串長度作為元素的權值,用該權值排序元素是字符串的列表:

下面的例子中,分別不指定權值和指定權值來排序兩個一模一樣的列表。

>>> _list_c = ['Beijing', 'Xi\'an', 'Taiyuan', 'Taipei', 'Hongkang']
>>> _list_d = ['Beijing', 'Xi\'an', 'Taiyuan', 'Taipei', 'Hongkang']
>>> _list_c.sort()            #不指定權值
>>> _list_d.sort(key=len)     #指定權值
>>> _list_c
['Beijing', 'Hongkang', 'Taipei', 'Taiyuan', "Xi'an"]
>>> _list_d
["Xi'an", 'Taipei', 'Beijing', 'Taiyuan', 'Hongkang']    #按照元素的長度作為權值的排序結果

很明顯,_list_d按照元素長度排序,沒有按照元素的字母表順序排序。

3. 指定reverse參數

    reverse參數指的是列表排序是升序還是降序排序。當reverse參數省略或reverse=False時,列表升序排序。當reverse=True時,列表降序排序:

>>> _list_a = [13, 45, 23, 66]
>>> _list_b = [13, 45, 23, 66]
>>> _list_a.sort()    #默認升序排序
>>> _list_b.sort(reverse=True)    #降序排序
>>> _list_a
[13, 23, 45, 66]
>>> _list_b
[66, 45, 23, 13]

?提示:當key參數和reverse參數同時指定時,sort函數按照元素的權值進行升序(reverse=False)或降序(reverse=True)進行排序。

註意事項

1. sort函數會改變原列表順序

使用sort函數時要註意的是,sort函數在調用後會改變列表本身的順序,而不是復制列表後排序,並返回復制後的列表。

>>> _list_a = [1, 34, 21, 4]
>>> _list_a.sort()
>>> _list_a
[1, 4, 21, 34]

從上面的代碼可以看出,_list_a的列表本身順序發生瞭變化。

2. 列表元素類型不一致

當列表中的所有元素都是同一種類型時,sort()函數會正常工作。有些時候甚至多種類型也可—-例如整型和浮點型—-隻要它們能夠自動地互相轉換:

>>> list_a = [23, 21.2, 22, -67.6]
>>> list_a.sort()
>>> list_a
[-67.6, 21.2, 22, 23]

但是當元素之間的類型不能夠互相轉換的時候,Python就會報錯,例如整數和字符串類型:

>>> a_list = [1, 3, '5', 2]
>>> a_list.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'

3. Python早些版本

在Python2中,sort函數還有一個cmp參數。

cmp — 可選參數, 如果指定瞭該參數會使用該參數的方法進行排序。

到此這篇關於Python list sort方法的具體使用的文章就介紹到這瞭,更多相關Python list sort內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: