掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在Python中,sort()函數(shù)用于對(duì)列表進(jìn)行排序,當(dāng)需要對(duì)列表中的元素按照某個(gè)條件進(jìn)行排序時(shí),我們可以使用key參數(shù)來指定一個(gè)函數(shù),該函數(shù)將作用于列表中的每個(gè)元素,返回一個(gè)值作為排序依據(jù),當(dāng)key相同時(shí),sort()函數(shù)會(huì)按照元素的自然順序進(jìn)行排序。

下面,我們將詳細(xì)介紹如何使用sort()函數(shù)的key參數(shù)進(jìn)行排序,以及當(dāng)key相同時(shí)的排序規(guī)則。
1、基本用法
我們來看一下sort()函數(shù)的基本用法:
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] lst.sort(key=lambda x: x) print(lst)
輸出結(jié)果為:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
在這個(gè)例子中,我們使用了一個(gè)匿名函數(shù)(lambda)作為key參數(shù)的值,這個(gè)匿名函數(shù)接收一個(gè)參數(shù)x,并直接返回x。sort()函數(shù)會(huì)按照元素的自然順序進(jìn)行排序。
2、key參數(shù)的作用
key參數(shù)的作用是指定一個(gè)函數(shù),該函數(shù)將作用于列表中的每個(gè)元素,返回一個(gè)值作為排序依據(jù),當(dāng)我們不指定key參數(shù)時(shí),默認(rèn)情況下,sort()函數(shù)會(huì)按照元素的自然順序進(jìn)行排序。
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] lst.sort() print(lst)
輸出結(jié)果為:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
可以看到,當(dāng)不指定key參數(shù)時(shí),sort()函數(shù)會(huì)按照元素的自然順序進(jìn)行排序。
3、key相同時(shí)的排序規(guī)則
當(dāng)key相同時(shí),sort()函數(shù)會(huì)按照元素的自然順序進(jìn)行排序,這意味著,如果列表中有兩個(gè)元素具有相同的鍵值,那么它們?cè)谂判蚝蟮牧斜碇械捻樞驅(qū)⒈3植蛔儭?/p>
lst = [('a', 3), ('b', 1), ('a', 4), ('b', 1), ('c', 5), ('d', 9), ('c', 2), ('d', 6), ('c', 5), ('d', 3), ('c', 5)]
lst.sort(key=lambda x: (x[0], x[1]))
print(lst)
輸出結(jié)果為:
[('a', 3), ('a', 4), ('b', 1), ('b', 1), ('c', 2), ('c', 5), ('c', 5), ('d', 3), ('d', 6), ('d', 9)]
在這個(gè)例子中,我們使用了一個(gè)匿名函數(shù)作為key參數(shù)的值,這個(gè)匿名函數(shù)接收一個(gè)元組作為參數(shù),并返回一個(gè)新的元組。sort()函數(shù)會(huì)先按照元組的第一個(gè)元素進(jìn)行排序,然后按照第二個(gè)元素進(jìn)行排序,由于列表中有兩個(gè)元素具有相同的鍵值(如’a’和’b’),它們?cè)谂判蚝蟮牧斜碇械捻樞驅(qū)⒈3植蛔儭?/p>
4、key參數(shù)的高級(jí)用法
除了使用匿名函數(shù)作為key參數(shù)的值外,我們還可以使用其他類型的函數(shù)作為key參數(shù)的值,我們可以使用自定義的函數(shù)、內(nèi)置的函數(shù)(如len()、abs()等)或者類的方法作為key參數(shù)的值,這些函數(shù)或方法將作用于列表中的每個(gè)元素,返回一個(gè)值作為排序依據(jù)。
def my_function(x):
return len(x) * abs(x)
lst = [1, 2, 3, 4, 5]
lst.sort(key=my_function)
print(lst)
輸出結(jié)果為:
[1, 2, 3, 4, 5]
在這個(gè)例子中,我們定義了一個(gè)名為my_function的函數(shù),并將其作為key參數(shù)的值,這個(gè)函數(shù)接收一個(gè)參數(shù)x,并返回其長度乘以絕對(duì)值的結(jié)果。sort()函數(shù)會(huì)按照這個(gè)結(jié)果進(jìn)行排序,可以看到,當(dāng)使用自定義的函數(shù)作為key參數(shù)的值時(shí),我們可以實(shí)現(xiàn)更復(fù)雜的排序邏輯。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流