python怎么将二维数组进行排序
时间: 2024-09-06 18:07:33 浏览: 39
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
5星 · 资源好评率100%
在Python中,将二维数组进行排序通常指的是对二维数组中的元素按照一定的规则进行排序。二维数组可以被看作是一个列表,列表中的每个元素本身也是一个列表。要对这样的结构进行排序,可以使用Python内置的`sorted()`函数或列表的`sort()`方法。这里有一些常用的方法来排序二维数组:
1. 按照二维数组中子列表的第一个元素排序:
```python
arr = [[3, 2], [1, 4], [5, 0]]
sorted_arr = sorted(arr, key=lambda x: x[0])
# 结果:[[1, 4], [3, 2], [5, 0]]
```
2. 按照二维数组中子列表的最后一个元素排序:
```python
arr = [[3, 2], [1, 4], [5, 0]]
sorted_arr = sorted(arr, key=lambda x: x[-1])
# 结果:[[5, 0], [3, 2], [1, 4]]
```
3. 根据子列表的长度进行排序:
```python
arr = [[3, 2], [1, 4, 5], [5, 0]]
sorted_arr = sorted(arr, key=len)
# 结果:[[3, 2], [5, 0], [1, 4, 5]]
```
4. 如果二维数组是一个矩阵,想要按行或按列排序,可以结合使用`zip()`函数和`sorted()`:
```python
arr = [[3, 2, 1], [4, 5, 6], [7, 8, 9]]
# 按行排序
sorted_arr = [list(x) for x in zip(*sorted(zip(*arr), key=lambda x: x[0]))]
# 结果:[[3, 2, 1], [4, 5, 6], [7, 8, 9]]
# 按列排序
sorted_arr = [list(x) for x in zip(*sorted(zip(*arr), key=lambda x: x[0], reverse=True))]
# 结果:[[7, 8, 9], [4, 5, 6], [3, 2, 1]]
```
5. 如果想要稳定排序,可以使用`sort()`方法对原数组进行就地排序:
```python
arr = [[3, 2], [1, 4], [5, 0]]
arr.sort(key=lambda x: x[0])
# 结果:arr 现在为 [[1, 4], [3, 2], [5, 0]]
```
请注意,排序函数的`key`参数是一个非常强大的工具,它允许你定义排序的具体规则,可以根据子列表的任何元素或元素的组合来进行排序。
阅读全文