在Python中,有多种方式对数据进行排序,常见的是对列表(list
)进行排序,另外numpy
库的数组也有排序方法。下面分别介绍:
列表排序
- 使用列表的
sort()
方法:sort()
方法会直接在原列表上进行排序,改变原列表的顺序。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort()
print(my_list)
默认是升序排序,如果要降序排序,可以设置 reverse=True
参数。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
my_list.sort(reverse=True)
print(my_list)
- 使用
sorted()
函数:sorted()
函数会返回一个新的已排序列表,原列表保持不变。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_sorted_list = sorted(my_list)
print(new_sorted_list)
print(my_list)
同样,也可以通过 reverse=True
参数实现降序排序。
my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
new_sorted_list = sorted(my_list, reverse = True)
print(new_sorted_list)
- 对复杂对象列表排序:如果列表中的元素是自定义对象或者字典等复杂类型,可以通过
key
参数指定一个函数来确定排序依据。 例如,假设有一个包含字典的列表,每个字典表示一个人及其年龄,要按年龄对人进行排序:
people = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 20},
{'name': 'Charlie', 'age': 30}
]
sorted_people = sorted(people, key=lambda person: person['age'])
print(sorted_people)
这里通过 key
参数指定了一个匿名函数 lambda person: person['age']
,表示按照字典中 'age'
键对应的值进行排序。
NumPy数组排序
如果使用 numpy
库,numpy.ndarray
也有排序方法。首先需要安装 numpy
库(pip install numpy
)。
import numpy as np
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])
sorted_arr = np.sort(arr)
print(sorted_arr)
对于多维数组,np.sort()
也可以按指定轴进行排序。例如,对二维数组按行排序:
import numpy as np
two_d_arr = np.array([
[3, 1, 4],
[1, 5, 9],
[2, 6, 5]
])
sorted_two_d_arr = np.sort(two_d_arr, axis = 1)
print(sorted_two_d_arr)
这里 axis = 1
表示按行排序,如果 axis = 0
则表示按列排序。