6 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
james.sort()是直接在原來james上排序,執(zhí)行后james已經(jīng)排好序,但sort()函數(shù)返回None,print(james.sort())輸出的是sort()的返回值,james.sort() ,print(james)才會(huì)打印排序好的james
sorted(james)是返回一個(gè)新的排序好的列表 ,原來的james沒有變

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
c是一個(gè)list,list中的每一個(gè)元素都是一個(gè)tuple,如c[0]=(0,9), c[1]=(1,8)
key的作用是指定待排序list(此處即C)中的元素中用來作為排序依據(jù)的屬性
上例中的key為匿名方法,分別以c[i][0], 和 c[i][1] 作為排序依據(jù),所以有這個(gè)結(jié)果
cmp的作用是指定比較的標(biāo)準(zhǔn),如升序,逆序等等
例2
L中的元素是tuple,cmp的作用是對(duì)L[i][1]和L[j][1],使用內(nèi)置cmp方法比較大小,由于L[i][1]是int,因此最后按升序排列
你可以考慮這樣一個(gè)例子, 有一個(gè)類Person, 有兩個(gè)屬性,Person.age, Person.gender
key的作用是可以指定按年齡還是按性別排序,cmp的作用是可以指定排序的標(biāo)準(zhǔn)(例如以年齡排序時(shí)升序還是降序,以性別排序時(shí)何種性別在前)
例3
randint的作用是隨機(jī)生成指定范圍的整數(shù),由于此處范圍是1到2,所以randint總是生成1或2
因此f隨機(jī)返回-1和1
以f作為cmp參數(shù)時(shí),得到亂序結(jié)果

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
li.sort(cmp=None, key=None, reverse=False)
uMinNum = li[0]
li.sort(cmp=None, key=None, reverse=True)
uMaxNum = li[0]
-----------------------------------------
li是一個(gè)列表,用列表存儲(chǔ)這些數(shù)據(jù), 然后用列表的排序方法sort()。
li.sort(cmp=None, key=None, reverse=False)也可以寫成li.sort(), 因?yàn)閟ort()函數(shù)的原形就是這樣。默認(rèn)的為是升序排序。
li.sort(cmp=None, key=None, reverse=True)修改sort()的reverse變量, 讓sort()進(jìn)行降序排序。
li[0] 是取排好序后的第一個(gè)元素

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,數(shù)字排序,字符串排序這里就不論述了;
其次,經(jīng)試驗(yàn)驗(yàn)證,比較數(shù)據(jù)時(shí),所有的數(shù)字均視為小于字符
eg.
>>> sorted(['a',8125,'812'])
[8125, '812', 'a']
>>>

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
1,3,a 主要根據(jù)asc碼排序,1和3屬于int類型,a屬于str類型,i的asc碼在s前面,所以先排數(shù)字,然后1排在3前面沒有什么疑問了吧。
添加回答
舉報(bào)