python的列表排序sort和sorted
阿新 • • 發佈:2018-12-13
list排序可以使用python內建的sorted()函式或list自帶的sort()函式。 區別: sorted()不修改原list而是建立個新list,list.sort()直接修改原list;
>>> l=[3,4,2,5,7,1]
>>> l_new=sorted(l)
>>> print(l_new,l) #原list未修改
[1, 2, 3, 4, 5, 7] [3, 4, 2, 5, 7, 1]
>>> l.sort()
>>> print(l) #原list被修改
[1, 2, 3, 4, 5, 7]
key引數: key的值為函式名或匿名函式,該函式會自動處理list中的每個元素並返回處理結果,然後sort/sorted函式根據返回結果對list進行排序; reverse引數: True為反序,預設False即正序;
# 根據元素的第一個值排序
>>> l=[[1,2],[2,3],[7,8],[5,6],[9,10]]
>>> l_new=sorted(l,key=lambda x:x[0]) # key為匿名函式,
>>> print(l_new)
[[1, 2], [2, 3], [5, 6], [7, 8], [9, 10]]
>>> def get_key(item): # 返回元素第一個值
return item[0]
>>> l.sort(key=get_key,reverse=True) # key為普通函式,並且進行反序排序
>>> print(l)
[[9, 10], [7, 8], [5, 6], [2, 3], [1, 2]]
穩定性
list中若存在相同的key,在排序前後相同key元素的順序是不會變化的。
例如:[[1,2],[2,9],[7,8],[2,6],[9,10]]
,以元素第一個值排序後為[[1,2],[2,9],[2,6],[7,8],[9,10]]