1. 程式人生 > >python的列表排序sort和sorted

python的列表排序sort和sorted

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]]

,具有相同key的元素[2,9],[2,6]順序不變