在 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