91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中sort()和sorted()的區別是什么

發布時間:2021-07-05 15:23:09 來源:億速云 閱讀:200 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關python中sort()和sorted()的區別是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

  • sorted():該函數第一個參數iterable為任意可以迭代的對象,cmp是比較函數,通常為lambda函數,key是用于比較的關鍵字,reverse表示排序結果是否反轉。

  • L.sort():該函數的三個參數和 sorted() 的后三個參數含義是一致的,而需要特別注意的是,該函數只適用于列表,而非任意可以迭代的對象。cmp是比較函數,接受兩個對象參數 x 和 y,返回 負數(x<y),0(x=y),正數(x>y)。

讓我們通過示例看一下:

L.sort()

A = [3,6,1,5,4,2]
A.sort()

這里需要注意的一點是,調用 L.sort() 完成排序后,改變了要排序的列表的結構, 即排序后A為[1, 2, 3, 4, 5, 6]。

我們可以指定關鍵字排序,比如:

student = [['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11]]
student.sort(key=lambda student: student[2])

學生列表中包含列表,每個列表是學生的姓名、成績以及年齡,排序過程中指定了key為學生的年齡,所以排序的結果為:[['Andy', 'B', 11], ['Jack', 'C', 18], ['Tom', 'A', 20]]。

除了通過key來實現,根據年齡排序我們也可以通過定義cmp函數來實現:

student = [['Tom', 'A', 20], ['Jack', 'C', 18], ['Andy', 'B', 11]]
student.sort(cmp=lambda x, y: x[2] - y[2])

通過定義 key 和 cmp 都可以完成排序,但是這兩者之間有什么區別呢?cmp傳入的函數在整個排序過程中會調用多次,因為會進行多次比較,所以函數調用開銷較大,因此使用 key 的效率比 cmp 的效率要高。

sorted()

sorted()可以應用于任意的可以迭代的對象,所以應用范圍比L.sort() 廣泛的多,可以應用于字符串,元組,列表,字典等可迭代對象。

B = 'Python'
sorted(B)
C = (3, 6, 1, 5, 4, 2)
sorted(C)
D = [3, 6, 1, 5, 4, 2]
sorted(D)
E = {'1': 'a', '2': 'b', '0': 'c'}
sorted(E.items())

需要注意的是,該函數會返回一個排序后的列表,原有可迭代對象保持不變,這與 L.sort() 函數不同。然而,這會浪費較大的存儲空間,尤其是數據量較大時。所以,在列表進行排序時,需要考慮是否需要保存原列表,如果無需保存原列表,則優先使用L.sort() 節省內存空間,提高效率

有的排序可能需要根據兩個關鍵字,常用的比如單詞的排序,第一個字母相同然后根據第二個字母排序,Python中的 sorted() 函數是否支持這種實現呢?答案是肯定的,再設置 key 時指定多個屬性即可:

L = ['cat', 'binary', 'big', 'dog']
print sorted(L, key=lambda x: (x[0], x[1], x[2]))

排序的結果為 ['big', 'binary', 'cat', 'dog']。

總結

  • L.sort() 函數只適用于列表排序,而sorted()函數適用于任意可以迭代的對象排序。

  • L.sort() 函數排序會改變原有的待排序列表,而sorted()函數則不會改變。所以在使用列表進行排序時,需要考慮是否需要保存原列表,如果無需保存原列表,則優先使用L.sort() 節省內存空間,提高效率。

  • 兩個函數通過定義 key 和 cmp 都可以完成排序,但是 key 的效率要遠遠高于 cmp,所以要優先使用 key 。


上述就是小編為大家分享的python中sort()和sorted()的區別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

左贡县| 民丰县| 肃南| 舒城县| 克什克腾旗| 南充市| 雅江县| 山东省| 长治市| 丰台区| 天等县| 长泰县| 景洪市| 宿松县| 贵阳市| 兴安盟| 修水县| 阆中市| 通江县| 南投市| 开原市| 安乡县| 始兴县| 淄博市| 兰考县| 将乐县| 东乡县| 遂平县| 祁东县| 宜丰县| 新民市| 嘉定区| 甘孜| 张家界市| 德令哈市| 大荔县| 巨野县| 肥城市| 外汇| 吉水县| 霍城县|