在 Python 中對列表列表進行排序
Samyak Jain
2023年1月30日
2021年7月13日
-
在 Python 中使用運算子模組中的
itemgetter()
函式和sorted()
函式對列表列表進行排序 -
在 Python 中使用
lambda
表示式和sorted()
函式對列表列表進行排序 -
在 Python 中使用
sort()
函式對列表列表進行排序
列表是 Python 中使用的最強大的資料結構之一。我們可以根據需求按升序或降序排列所有元素,從而在 Python 中對列表進行排序。
我們也可以在 Python 中巢狀列表。這些可以被認為是一個列表列表。對一個列表的列表進行排序,就是按照指定的索引作為鍵來排列所有的內部列表。
在本教程中,我們將根據一些索引對 Python 中的列表列表進行排序。
在 Python 中使用運算子模組中的 itemgetter()
函式和 sorted()
函式對列表列表進行排序
函式 sorted()
用於在 Python 中對列表進行排序。預設情況下,它按升序對列表進行排序。operator 模組中的函式 itemgetter()
將索引號作為引數,並從位於該索引號的資料集中返回元素。
因此,函式 sorted(List_name, key=itemgetter(index_number))
按位於每個內部列表的指定 index_number 處的元素對列表列表進行排序。
例如,
from operator import itemgetter
A = [[10, 8], [90, 2], [45, 6]]
print("Sorted List A based on index 0: % s" % (sorted(A, key=itemgetter(0))))
B = [[50, 'Yes'], [20, 'No'], [100, 'Maybe']]
print("Sorted List B based on index 1: % s" % (sorted(B, key=itemgetter(1))))
輸出:
Sorted List A based on index 0: [[10, 8], [45, 6], [90, 2]]
Sorted List B based on index 1: [[100, 'Maybe'], [20, 'No'], [50, 'Yes']]
要按降序對列表列表進行排序,將 reverse
引數與 key
引數以及 sorted()
函式中的列表名稱一起使用。
例如,
from operator import itemgetter
C = [[10, 8, 'Cat'], [90, 2, 'Dog'], [45, 6, 'Bird']]
print("Reversed sorted List C based on index 1: % s" % (sorted(C, key=itemgetter(1), reverse=True)))
輸出:
Reverse sorted List C based on index 1: [[10, 8, 'Cat'], [45, 6, 'Bird'], [90, 2, 'Dog']]
在 Python 中使用 lambda
表示式和 sorted()
函式對列表列表進行排序
lambda
表示式是 Python 中的簡單單行函式。
函式 sorted(List_name, key=lambda x:x[index_number])
用於按位於每個內部列表的指定 index_number 處的元素對列表列表進行排序。
例如,
A = [[100, 'Yes'], [40, 'Maybe'], [60, 'No']]
print("Sorted List A based on index 0: % s" % (sorted(A, key=lambda x:x[0])))
B = [[2, 'Dog'], [0, 'Bird'], [7, 'Cat']]
print("Sorted List A based on index 1: % s" % (sorted(B, key=lambda x:x[1])))
輸出:
Sorted List A based on index 0: [[40, 'Maybe'], [60, 'No'], [100, 'Yes']]
Sorted List B based on index 1: [[0, 'Bird'], [7, 'Cat'], [2, 'Dog']]
同樣,我們可以使用 reverse
引數以降序獲取輸出。
例如,
C = [[60, 5], [90, 7], [30, 10]]
print("Reversed sorted List C based on index 0: % s" % (sorted(C, key=lambda x:x[0], reverse=True)))
輸出:
Reversed sorted List C based on index 0: [[90, 7], [60, 5], [30, 10]]
在 Python 中使用 sort()
函式對列表列表進行排序
sort()
方法根據每個內部列表的第一個元素對 Python 中的列表列表進行排序。此方法對原始列表本身進行更改。我們使用 reverse
引數按降序排序。
例如,
A = [[55, 90], [45, 89], [90, 70]]
A.sort()
print("New sorted list A is % s" % (A))
A.sort(reverse=True)
print("New reverse sorted list A is % s" % (A))
輸出:
New sorted list A is [[45, 89], [55, 90], [90, 70]]
New reverse sorted list A is [[90, 70], [55, 90], [45, 89]]
要根據內部列表的長度對給定列表進行排序,請使用 key=len
引數。
例如,
A = [[5, 90, 'Hi', 66], [80, 99], [56, 32, 80]]
A.sort(key=len)
print("New sorted list A is % s" % (A))
輸出:
New sorted list A is [[80, 99], [56, 32, 80], [5, 90, 'Hi', 66]]