list.sort 和 sorted

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) , 也就是默認用元素自己的值來排序。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章