Python中的两种排序方法:sort()和sorted()
发布网友
发布时间:2024-10-04 22:26
我来回答
共1个回答
热心网友
时间:2024-10-29 00:32
Python中常用的排序方法有 sort() 和 sorted()。sort() 方法直接修改原列表,返回值为 None;而 sorted() 则不会修改原列表,返回一个排序后的新列表。我们可以通过实例来说明:
python
import operator
a = [3, 4, 5, 1]
b = [1, 3, 2, 4]
c = {1: 'a', 3: 'b', 2: 'c'}
d = [[3, 1], [2, 4]]
print("print(a):", a)
print("print(a.sort()):", a.sort())
print("print(a):", a) # 注意,调用 sort() 后,a 的内容已改变
print("print(b):", b)
print("print(sorted(b))", sorted(b)) # 使用 sorted() 后,b 保持不变,输出结果为 [1, 2, 3, 4]
print("print(b):", b)
print("print(c):", c)
print("print(sorted(c)):", sorted(c)) # 对字典排序时,sorted() 返回键的排序结果
print("print(operator.itemgetter(0)(a)):", operator.itemgetter(0)(a)) # 获取 a 中元素的第一个元素
print("sorted(d,key=operator.itemgetter(0)):", sorted(d, key=operator.itemgetter(0))) # 按列表元素的子列表第一个元素排序
print("sorted(d,key=operator.itemgetter(1)):", sorted(d, key=operator.itemgetter(1))) # 按列表元素的子列表第二个元素排序
从上述代码执行结果可以看出,sort() 方法直接修改了原列表 a 的内容,而 sorted() 则生成了一个新列表。另外,对于字典类型的排序,sorted() 会按字典键进行排序。同时,通过 operator.itemgetter() 方法可以实现更灵活的排序逻辑,例如根据列表中子列表的某个元素进行排序。