📅  最后修改于: 2023-12-03 15:34:11.744000             🧑  作者: Mango
本地列表是在编程中常见的一种数据结构,对列表进行排序是一个很常见的操作。Python 中提供了多种方法对列表进行排序,这里介绍其中的几种方法。
使用 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]
除了使用 sorted 函数,还可以使用列表的 sort 方法对列表进行排序。sort 方法无需返回列表,它直接对原列表进行排序。
lst = [3, 1, 4, 2, 7, 5, 8, 6]
lst.sort()
print(lst) # [1, 2, 3, 4, 5, 6, 7, 8]
除了默认排序方式,还可以针对不同的排序规则,使用 lambda 函数来指定排序的规则。
本例中,按照列表中每个元素的第二个字符的ASCII码值来排序:
lst = ['abc', 'cba', 'bed']
sorted_lst = sorted(lst, key=lambda x: x[1]) # 按照第二个字符的ASCII码值排序
print(sorted_lst) # ['abc', 'bed', 'cba']
Python 模块中的 operator 模块提供了一些有用的方法来对列表进行排序,其中包括:
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 中对列表进行排序的几种方法,不同的情况使用不同的方法会更加方便。