在 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]]