在 Python 中對列表列表進行排序

Samyak Jain 2023年10月10日
  1. 在 Python 中使用運算子模組中的 itemgetter() 函式和 sorted() 函式對列表列表進行排序
  2. 在 Python 中使用 lambda 表示式和 sorted() 函式對列表列表進行排序
  3. 在 Python 中使用 sort() 函式對列表列表進行排序
在 Python 中對列表列表進行排序

列表是 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]]

相關文章 - Python List