📜  Python 排序列表 - Python (1)

📅  最后修改于: 2023-12-03 15:34:11.744000             🧑  作者: Mango

Python 排序列表 - Python

本地列表是在编程中常见的一种数据结构,对列表进行排序是一个很常见的操作。Python 中提供了多种方法对列表进行排序,这里介绍其中的几种方法。

1. 利用 sorted 函数进行列表排序

使用 sorted 函数可以对列表进行排序,但调用 sorted 函数后不会改变原来列表的值,而是返回一个已经排好序的新列表。

lst = [3, 1, 4, 2, 7, 5, 8, 6]
sorted_lst = sorted(lst)

print(sorted_lst) # [1, 2, 3, 4, 5, 6, 7, 8]
print(lst) # [3, 1, 4, 2, 7, 5, 8, 6]
2. 利用 sort 方法对列表排序

除了使用 sorted 函数,还可以使用列表的 sort 方法对列表进行排序。sort 方法无需返回列表,它直接对原列表进行排序。

lst = [3, 1, 4, 2, 7, 5, 8, 6]
lst.sort()

print(lst) # [1, 2, 3, 4, 5, 6, 7, 8]
3. 利用 lambda 函数进行列表排序

除了默认排序方式,还可以针对不同的排序规则,使用 lambda 函数来指定排序的规则。

本例中,按照列表中每个元素的第二个字符的ASCII码值来排序:

lst = ['abc', 'cba', 'bed']
sorted_lst = sorted(lst, key=lambda x: x[1]) # 按照第二个字符的ASCII码值排序

print(sorted_lst) # ['abc', 'bed', 'cba']
4. 利用 operator 模块进行列表排序

Python 模块中的 operator 模块提供了一些有用的方法来对列表进行排序,其中包括:

  • itemgetter(n):返回一个函数,对于参数为 seq 可以类似于 seq[n] 进行结果排序;
  • attrgetter(n):返回一个函数,对于参数为 obj,可以类似于 obj.n 进行结果排序。
from operator import itemgetter
from operator import attrgetter

lst = [(2, 3), (1, 2), (4, 1), (3, 7)]
sorted_lst = sorted(lst, key=itemgetter(1)) # 按照元组中的第二元素排序

print(sorted_lst) # [(4, 1), (1, 2), (2, 3), (3, 7)]

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __repr__(self):
        return repr((self.name, self.age))

lst = [Person('Alice', 23), Person('Bob', 25), Person('Charlie', 21)]
sorted_lst = sorted(lst, key=attrgetter('age')) # 按照 Person 类中的 age 属性排序

print(sorted_lst) # [('Charlie', 21), ('Alice', 23), ('Bob', 25)]

以上就是 Python 中对列表进行排序的几种方法,不同的情况使用不同的方法会更加方便。