sorted() 函數對所有可迭代的對象進行排序操作。
sort 與 sorted 區別:
sort 是應用在 list 上的方法,sorted 可以對所有可迭代的對象進行排序操作。
list 的 sort 方法返回的是對已經存在的列表進行操作,無返回值,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
語法
sorted 語法:
sorted(iterable, key=None, reverse=False)
參數說明:
- iterable -- 可迭代對象。
- key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中,指定可迭代對象中的一個元素來進行排序。
- reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)。
返回值
返回重新排序的列表。
解析:
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})#按鍵排序
[1, 2, 3, 4, 5]
>>> sorted(('981276345'))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
排序字典好像只返回鍵的排列列表,不過影響不大,排序字符串返回每個字符的列表,也沒什麼。這樣看來只有在拍序列表時纔不會改變。
b = {1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}#按值排序
a=sorted(b, key=lambda x:b[x])
print(a)
結果:[5, 2, 3, 1, 4]
字典本身沒有順序概念,所有返回鍵的排序list
foo=[('zs',19),(['ll',54]),('wa',17),('df',23)]
a=sorted(foo,key=lambda x:x[1])
print(a)
結果:[('wa', 17), ('zs', 19), ('df', 23), ['ll', 54]]
發現:如上,lambda是一個匿名參數返回迭代對象的下標爲1的值,我們可以這樣認爲sorted將迭代對象每個可迭代對象依次傳入lambda,根據lambda的返回再進行排序。
如果改變x的正負值:
foo=[('zs',19),(['ll',54]),('wa',17),('df',23)]
a=sorted(foo,key=lambda x:-x[1])
print(a)
#學習中遇到問題沒人解答?小編創建了一個Python學習交流羣:711312441
結果:[['ll', 54], ('df', 23), ('zs', 19), ('wa', 17)]
降序排列