老規矩,先看help幫助資訊,
sort(...)
L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -, ,
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
可見,這兩個函數有以下差別:
- 最直白的一點差別就是sort是在原清單上修改,而sorted則是傳回新的清單
- sort是list清單的方法,而sorted則是内置的方法
- 由于sorted函數是内置,且操作對象為iterable對象,這就決定sorted的使用範圍比sort更廣
看實際例子,
#sort函數
>>> a=[,,,,,]
>>> a
[, , , , , ]
>>> a.sort()
>>> a
[, , , , , ] #排序後清單發生變化
>>> a.sort(reverse=True) #反向排序
>>> a
[, , , , , ]
#sorted函數
>>> b=[,,,,,]
>>> sorted(b)
[, , , , , ] #排序後的輸出
>>> b
[, , , , , ] #原清單并未改變
再看下清單元素為tupe時的操作,
>>> a=[('Kobe', ), ('Jordan', ), ('T-mac', )]
>>> a.sort()
>>> a
[('Jordan', ), ('Kobe', ), ('T-mac', )]
>>> a.sort(key=lambda x: x[])
>>> a
[('T-mac', ), ('Jordan', ), ('Kobe', )]
>>> b=[('Kobe', ), ('Jordan', ), ('T-mac', )]
>>> b
[('Kobe', ), ('Jordan', ), ('T-mac', )]
>>> sorted(b)
[('Jordan', ), ('Kobe', ), ('T-mac', )]
>>> sorted(b, key=lambda x: x[])
[('T-mac', ), ('Jordan', ), ('Kobe', )]
>>>
由此可知,對于tupe類元素,在排序時可以選擇以哪個域作為排序關鍵詞,這也是我們平時比較常用的功能。