list.sort 方法會就地排序清單,也就是不會把原來清單複制一份。這也是這個方法傳回值是None的原因,提心你本方法不會建立一個清單。
(在這種情況下傳回 None 其實是 Python 的一個慣例: 如果一個函數或者方法對對象進行的是就地改動, 那它就應該傳回 None, 好讓調用者知道傳入的參數發生了變動, 而且并未産生新的對象。)
l = [3, 1, 2]
print(id(l)) # 2078283081672
print(l.sort()) # None
print(id(l)) # 2078283081672
sorted 會建立一個清單作為傳回值。這個方法可以接受任何形式的可疊代對象作為參數, 甚至包括不可
變序列或生成器。
不管是 list.sort 方法還是 sorted 函數, 都有兩個可選的關鍵字參數。
reverse
如果被設定為 True, 被排序的序列裡的元素會以降序輸出( 也就是說把最大值當作最小值來排序) 。 這個參數的預設值是False。
key
一個隻有一個參數的函數, 這個函數會被用在序列裡的每一個元素上, 所産生的結果将是排序算法依賴的對比關鍵字。 比如說, 在對一些字元串排序時, 可以用 key=str.lower 來實作忽略大小寫的排序, 或者是用 key=len 進行基于字元串長度的排序。 這個參數的預設值是恒等函數( identity function) , 也就是預設用元素自己的值來排序。