python如何將list排序

wjaning發表於2021-09-11

python如何將list排序

python提供了對list排序的兩種方法

1、使用list內建函式sort排序

list.sort(key=None,reverse=False)

eg:

In [57]: l=[27,47,3,42,19,9]
In [58]: l.sort()
In [59]: l
Out[59]: [3, 9, 19, 27, 42, 47]

相關推薦:《》

上面這種是直接對l列表裡面的元素排序,sort()函式還提供了一個key引數,這個引數的值是一個函式,這個函式只能有一個返回值,且返回值用來進行比較。 這個技術是快速的因為key指定的函式將準確地對每個元素呼叫。

In [53]: L = [('b',6),('a',1),('c',3),('d',4)]
In [54]: L.sort(key=lambda x:x[1])
In [56]: L
Out[56]: [('a', 1), ('c', 3), ('d', 4), ('b', 6)]

上面那段話,再結合這個例子,我是這樣理解的:匿名函式lambda x:x[1]相當於:

def f(x):
    return x[1]

key引數接受列表L裡的每個元素的第二個引數,根據第二個引數的排序,確定整體的排序。也就是說,設定了key引數後,key接收的值代表了整體,排序的標準就變成了對key所接收的值進行排序。

2、使用python內建函式sorted排序

sorted方法和sort方法很相似,不同的是,sorted不改變原來的列表,並返回一個排好序的列表。而list.sort()是改變了原有的列表。還有就是,list.sort()只能對列表排序,而sorted()可以對其他資料結構排序。

In [62]: l=[27,47,3,42,19,9]
In [63]: sorted(l)
Out[63]: [3, 9, 19, 27, 42, 47]

sorted方法同樣可以用key引數,用法也是一樣的。

In [68]: data=[{'name':'Abbie','score':99},{'name':'Ivy','score':80}]
In [69]: sorted(data,key=lambda x:x['score'])
Out[69]: [{'name': 'Ivy', 'score': 80}, {'name': 'Abbie', 'score': 99}]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2835855/,如需轉載,請註明出處,否則將追究法律責任。

相關文章