python2.7的sort函式預設採用什麼排序演算法,適用於怎樣的數列的排序?
剛學python,想請教一下,預設的函式會不會影響執行效率。
引用自
http://
zhidao。baidu。com/link?
url=wZD_oY7zrVdYLP6uvO1qUaiBRYvidsbw2e3xFYJf_sq-8lckxoQh7m5RJmTV6ZTveb_jHA_AzNqT_I8dR1Wnk_
@曹曉山
最近也在學習python,推薦《Python基礎教程》,雖然我只看了這本書……其中第二版40頁也詳細說明了高階排序的內容,使用的就是sort函式,當然下面的回答也是非常全面的。剛剛發現這是我的知乎首答,真是社會敗類啊,默默在知乎上混了好幾年……
———————————————————————————————————————————
Python中的sort()函式是序列的內部函式,函式原型:
L。sort(cmp=None, key=None, reverse=False)
函式作用:它是把L原地排序,也就是使用後並不是返回一個有序的序列副本,而是把當前序列變得有序。
Python中sort()引數說明:
(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 表示是否逆序
Python中sort()函式舉例:
(1)按照元素長度排序
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f(x):
return len(x)
sort(key=f)
print L
//輸出:
//[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
(2)按照每個字典元素裡面key為1的元素的值排序
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(a,b):
return a[1]-b[1]
L。sort(cmp=f2)
print L
//輸出:
//[{1: 1, 2: 4, 5: 6}, {1: 3, 6: 3}, {1: 5, 3: 4}, {1: 9}]
上一篇:3.4規律性和非規律性骨骼
下一篇:美麗的操場