1樓:挖礦老司機
python中的sorted排序,真的是高大上,用的Timsort演算法。
什麼是Timsort,請看 wiki的解釋:http://en.wikipedia.org/wiki/Timsort
另外,國內有乙個文件,適當翻譯:Timsort原理介紹 - Data Analytics - 部落格頻道 - CSDN.NET,
這裡擷取乙個不同排序演算法比較的圖示,就明白sorted的威力了。從時間複雜度來看,Timsort是威武的。
從空間複雜度來講,需要的開銷在數量大的時候會增大。
綜上,可以看出,就一般情況,使用sorted足以能夠完成排序的要求,並且是穩定的。
當然,python中也有其它一些排序模組,都可以直接拿過來使用。
FROM: qiwsir/algorithm
2樓:李志闖
引用自http://
@曹曉山
最近也在學習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 = [,,,]
def f(x):
return len(x)
sort(key=f)
print L
//輸出:
//[, , , ]
(2)按照每個字典元素裡面key為1的元素的值排序
L = [,,,]
def f2(a,b):
return a[1]-b[1]
L.sort(cmp=f2)
print L
//輸出:
//[, , , ]
Python2 7 安裝tensorflow gpu後,import tensorflow出錯?
習慣丶不習慣 首先可以在Pycharm裡面的setting 中看一下自己python版本以及已經安裝後的包,tensorflow gpu 需要安裝對應的CUDA和CUDNN,對於乙個重灌系統好多次的人來說,cuda和cudnn版本的很重要!兩個彼此要對應,而且也要符合python2.7的版本。PS ...
零基礎學習Python,用python2 7還是用python3
JWTbaby 零基礎學習python當然要是用python3了呀,孩子。目前市面上的公司都已經將python2過渡到python3了,python2的最後乙個版本是python2.17,已經停止維護了。而且python3中解決了或者優化了很多python2的問題,比如字典的keys values ...
Python2 7 中文字元編碼,使用Unicode時,選擇什麼編碼格式?
小頭 這個問題可以參考我的另乙個回答,python 中文亂碼出現,不知道是什麼原因?小頭的回答 在Python2中,str型別資料的編碼格式取決於具體環境,在cmd輸入 漢字 時,實際上是以cp936編碼的,因此這裡使用 unicode 漢字 gb2312 把它轉換成unicode型別 gbk相容g...