python中sort()與sorted()的區(qū)別是什么-創(chuàng)新互聯(lián)

python中sort()與sorted()的區(qū)別是什么?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)成立與2013年,先為新豐等服務(wù)建站,新豐等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新豐企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

python 中sorted與sort有什么區(qū)別

sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort是容器的函數(shù),用List的成員函數(shù)sort進(jìn)行排序
sorted是Python的內(nèi)建函數(shù)相同的參數(shù),用built-in函數(shù)sorted進(jìn)行排序
sorted(iterable,key=None,reverse=False),返回新的列表,對(duì)所有可迭代的對(duì)象均有效
sort(key=None,reverse=False) 就地改變列表 reverse:True反序;False 正序

例如:

>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> sorted(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a
[1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

以下是詳細(xì)說(shuō)明

Python list內(nèi)置sort()方法用來(lái)排序,也可以用python內(nèi)置的全局sorted()方法來(lái)對(duì)可迭代的序列排序生成新的序列。

sorted(iterable,key=None,reverse=False),返回新的列表,對(duì)所有可迭代的對(duì)象均有效

sort(key=None,reverse=False) 就地改變列表 reverse:True反序;False 正序

sort是容器的函數(shù):sort(cmp=None, key=None, reverse=False)

sorted是python的內(nèi)建函數(shù):sorted(iterable, cmp=None, key=None, reverse=False)

參數(shù)解析:

cmp:比較函數(shù),比較什么參數(shù)由key決定。例如:cmp(e1, e2) 是具有兩個(gè)參數(shù)的比較函數(shù),返回值:負(fù)數(shù)(e1 < e2);0(e1 == e2);正數(shù)( e1 > e2)。
key:用列表元素的某個(gè)屬性或函數(shù)作為關(guān)鍵字。
reverse:排序規(guī)則,可以選擇True或者False。
sorted多一個(gè)參數(shù)iterable:待排序的可迭代類型的容器

示例1:

>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]


>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> sorted(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
>>> a
[1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12]

區(qū)別:

對(duì)于一個(gè)無(wú)序的列表a,調(diào)用a.sort(),對(duì)a進(jìn)行排序后返回a,sort()函數(shù)修改待排序的列表內(nèi)容。
而對(duì)于同樣一個(gè)無(wú)序的列表a,調(diào)用sorted(a),對(duì)a進(jìn)行排序后返回一個(gè)新的列表,而對(duì)a不產(chǎn)生影響。

示例2:

假設(shè)用元組保存每一個(gè)學(xué)生的信息,包括學(xué)號(hào),姓名,年齡。用列表保存所有學(xué)生的信息。

>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> list1.sort()
>>> list1
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]


>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> sorted(list1)
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]
>>> list1
[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

小結(jié):由示例可以看出,當(dāng)列表由list(或者tuple)組成時(shí),默認(rèn)情況下,sort和sorted都會(huì)根據(jù)list[0](或者tuple[0])作為排序的key,進(jìn)行排序。

以上都是默認(rèn)的排序方式,我們可以編寫(xiě)代碼控制兩個(gè)函數(shù)的排序行為。主要有三種方式:基于key函數(shù);基于cmp函數(shù)和基于reverse函數(shù)

1)基于key函數(shù)排序

>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> list1.sort(key=lambda x:x[2])
>>> list1
[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]


>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> sorted(list1, key=lambda x:x[2])
[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]
>>> list1
[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

2)基于cmp函數(shù)

>>> list1=[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> list1.sort(cmp=lambda x,y:cmp(x[1],y[1]))
>>> list1
[(5, 'Lucy', 19), (2, 'Mike', 22), (8, 'Zogan', 20)]


>>> list1=[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> sorted(list1, cmp=lambda x,y:cmp(x[1],y[1]))
[(5, 'Lucy', 19), (2, 'Mike', 22), (8, 'Zogan', 20)]
>>> list1
[(8, 'Zogan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

3)基于reverse函數(shù)

>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
 

>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort(reverse=True)
>>> a
[12, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a.sort(reverse=True)

關(guān)于python中sort()與sorted()的區(qū)別是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

分享題目:python中sort()與sorted()的區(qū)別是什么-創(chuàng)新互聯(lián)
鏈接地址:http://muchs.cn/article36/hijpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)、App開(kāi)發(fā)、網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)