Python sort sorted函式詳解

2021-06-18 06:55:19 字數 2946 閱讀 3817

一、sort函式

sort函式是序列的內部函式

函式原型:

l.sort(cmp=none, key=none, reverse=false)

函式作用:

它是把l原地排序,也就是使用後並不是返回乙個有序的序列副本,而是把當前序列變得有序

引數說明:

(1)  cmp引數

cmp接受乙個函式,拿整形舉例,形式為:

def f(a,b):

return a-b

如果排序的元素是其他型別的,如果a邏輯小於b,函式返回負數;

a邏輯等於b,函式返回0;

a邏輯大於b,函式返回正數就行了

(2)  key引數

key也是接受乙個函式,不同的是,這個函式只接受乙個元素,形式如下

def f(a):

return len(a)

key接受的函式返回值,表示此元素的權值,sort將按照權值大小進行排序

(3) reverse引數

接受false 或者true 表示是否逆序

sort舉例:

(1)按照元素長度排序

l = [,,,]

deff(x):

return

len(x)

sort(key=f)

printl

輸出:

[, , , ]

(2)按照每個字典元素裡面key為1的元素的值排序

l= [,,,]

def

f2(a,b):

returna[1

]-b[1]

l.sort(cmp=f2)

print

l

輸出:

[, , , ]

二、sorted函式

sorted函式是內建函式,他接受乙個序列,返回有序的副本

他與sort的唯一區別就是會返回副本

python的排序函式sort,sorted在列表排序和字典排序中的應用詳解和舉例

python 列表list中內建了乙個十分有用的排序函式sort,sorted,它可以用於列表的排序,以下是例子。

a = [5,2

,1,9

,6]        

>>> sorted(a)                  #將a從小到大排序,不影響a本身結構

[1, 2, 

5, 6, 

9] >>> sorted(a,reverse = true

)   

#將a從大到小排序,不影響a本身結構

[9, 6, 

5, 2, 

1] >>> a.sort()                   #將a從小到大排序,影響a本身結構

>>> a 

[1, 2, 

5, 6, 

9] >>> a.sort(reverse = true

)     

#將a從大到小排序,影響a本身結構

>>> a 

[9, 6, 

5, 2, 

1] 注意,a.sort() 已改變其結構,b = a.sort() 是錯誤的寫法! 

>>> b = ['aa'

,'bb'

,'bb'

,'zz'

,'cc'

] >>> sorted(b) 

['bb'

, 'cc'

, 'aa'

, 'bb'

, 'zz'

]    

#按列表中元素每個字母的ascii碼從小到大排序,如果要從大到小,請用sorted(b,reverse=true)下同

>>> c =['ccc'

, 'bb'

, 'ffff'

, 'z'

]  >>> sorted(c,key=len)             #按列表的元素的長度排序

['z'

, 'bb'

, 'ccc'

, 'ffff'

] >>> d =['ccc'

, 'bb'

, 'ffff'

, 'z'

] >>> sorted(d,key = str.lower )    #將列表中的每個元素變為小寫,再按每個元素中的每個字母的ascii碼從小到大排序

['bb'

, 'ccc'

, 'ffff'

, 'z'

] >>> def

lastchar(s): 

return

s[-1

] >>> e = ['abc'

,'b'

,'aaz'

,'ef'

] >>> sorted(e,key = lastchar)      #自定義函式排序,lastchar為函式名,這個函式返回列表e中每個元素的最後乙個字母

['b'

, 'abc'

, 'ef'

, 'aaz'

]         

#sorted(e,key=lastchar)作用就是 按列表e中每個元素的最後乙個字母的ascii碼從小到大排序

>>> f = [,,]     

#列表中的元素為字典

>>> def

age(s): 

return

s['age'

] >>> ff = sorted(f,key = age)      #自定義函式按列表f中字典的age從小到大排序 

[, , ] 

>>> f2 = sorted(f,key = lambda

x:x[

'age'

])    

#如果覺得上面定義乙個函式**不美觀,可以用lambda的形式來定義函式,效果同上

Python sort sorted函式詳解

一 sort函式 sort函式是序列的內部函式 函式原型 l.sort cmp none,key none,reverse false 函式作用 它是把l原地排序,也就是使用後並不是返回乙個有序的序列副本,而是把當前序列變得有序 引數說明 1 cmp引數 cmp接受乙個函式,拿整形舉例,形式為 de...

Python sort sorted函式詳解

一 sort函式 sort函式是序列的內部函式 函式原型 l.sort cmp none,key none,reverse false 函式作用 它是把l原地排序,也就是使用後並不是返回乙個有序的序列副本,而是把當前序列變得有序 引數說明 1 cmp引數 cmp接受乙個函式,拿整形舉例,形式為 de...

python sort sorted 排序詳解

python中,list型別內建了sort 方法用於排序。當然,python還有內建的全域性sorted 方法,用於可迭代序列的排序。這兩個方法大部分的用法是相同的,最大的不同在於,sort 方法不會生成乙個新的list,而是在原有的list上進行修改 sorted 方法則是生成乙個新的可迭代序列。...