L.sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
這樣看,sorted函數只比sort函數多一個iterable參數,其他沒什麼不一樣,iterable是一個迭代器參數。
1、
sorted是一個內建函數,sort是列表的一個內部函數,因此調用方式不同,而且sorted函數不改變其迭代器參數,返回一個排序好的序列副本,可是sort做爲列表的內部函數,在調用完以後,列表自身內部已是排序好的順序函數
L1 = [3,2,5,1,4]
L2 = [3,2,5,1,4]
L1.sort()
print('L1:',L1)
print('sorted:',sorted(L2))
print('L2:',L2)
1
2
3
4
5
6
這段代碼運行結果爲
L1: [1, 2, 3, 4, 5]
sorted: [1, 2, 3, 4, 5]
L2: [3, 2, 5, 1, 4]排序
2、key參數
key 是帶一個參數的函數, 用來爲每一個元素提取比較值
1.假如咱們不使用key參數,key默認是Noneit
L = [(1,'S'),(3,'E'),(2,'A')]
L.sort()
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L))
1
2
3
4
5
以上代碼運行的結果爲:
sort: [(1, ‘S’), (2, ‘A’), (3, ‘E’)]
sorted: [(1, ‘S’), (2, ‘A’), (3, ‘E’)]ast
2.如今咱們使用key參數,提取最後一個元素做爲比較值匿名函數
def last(L):
return L[-1]
L = [(1,'S'),(3,'E'),(2,'A')]
L.sort(key = last)
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L,key = last))
1
2
3
4
5
6
7
上面代碼運行結果爲:
sort: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]
sorted: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]lambda
3.使用lambda匿名函數做爲key參數
經過 lambda 關鍵字,能夠建立短小的匿名函數。迭代器
L = [(1,'S'),(3,'E'),(2,'A')]
L.sort(key = lambda L : L[-1])
print('sort:',L)
L = [(1,'S'),(3,'E'),(2,'A')]
print('sorted:',sorted(L,key = lambda L : L[-1]))
1
2
3
4
5
運行結果爲;
sort: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]
sorted: [(2, ‘A’), (3, ‘E’), (1, ‘S’)]sort
3、reverse參數
reverse參數是默認值false的時候是正序排,當reverse = True的時候是倒序排列return
L = [1,3,2]
L.sort()
print(L)
L.sort(reverse = True)
print(L)
1
2
3
4
5
運行結果爲:
[1, 2, 3]
[3, 2, 1]參數
關於cmp函數,由於在Python3.x中已經取消了這個參數。。在此就很少說了 ---------------------