Python 列表排序:快速上手指南
在 Python 中,列表(list
)是一种非常灵活的数据结构,用于存储多个元素。对列表进行排序是数据处理中的常见任务。Python 提供了多种方法来对列表进行排序,无论是简单的升序或降序,还是基于自定义规则的排序,都能轻松实现。今天,就让我们一起深入探讨如何对 Python 列表进行排序。
一、使用 sort()
方法
sort()
方法是列表对象的一个方法,用于原地排序,即直接修改原列表。
1. 升序排序
默认情况下,sort()
方法按升序排序。
示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort()
print(numbers) # 输出:[1, 1, 2, 3, 4, 5, 6, 9]
2. 降序排序
通过设置 reverse=True
参数,可以按降序排序。
示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
numbers.sort(reverse=True)
print(numbers) # 输出:[9, 6, 5, 4, 3, 2, 1, 1]
3. 自定义排序
通过 key
参数,可以指定一个函数来决定排序的依据。
示例代码:
fruits = ["apple", "banana", "cherry", "date"]
fruits.sort(key=len) # 按字符串长度排序
print(fruits) # 输出:['date', 'apple', 'banana', 'cherry']
二、使用 sorted()
函数
sorted()
函数是一个内置函数,用于返回一个新的已排序列表,原列表保持不变。
1. 升序排序
默认情况下,sorted()
函数按升序排序。
示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # 输出:[1, 1, 2, 3, 4, 5, 6, 9]
print(numbers) # 原列表保持不变:[3, 1, 4, 1, 5, 9, 2, 6]
2. 降序排序
通过设置 reverse=True
参数,可以按降序排序。
示例代码:
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # 输出:[9, 6, 5, 4, 3, 2, 1, 1]
3. 自定义排序
通过 key
参数,可以指定一个函数来决定排序的依据。
示例代码:
fruits = ["apple", "banana", "cherry", "date"]
sorted_fruits = sorted(fruits, key=len) # 按字符串长度排序
print(sorted_fruits) # 输出:['date', 'apple', 'banana', 'cherry']
三、自定义排序规则
通过 key
参数,可以实现复杂的排序规则。key
参数接受一个函数,该函数返回一个用于排序的值。
1. 按多个条件排序
可以通过返回一个元组来实现按多个条件排序。
示例代码:
data = [{"name": "Alice", "age": 25, "score": 88},{"name": "Bob", "age": 22, "score": 92},{"name": "Charlie", "age": 24, "score": 85}
]# 按年龄升序,分数降序排序
sorted_data = sorted(data, key=lambda x: (x["age"], -x["score"]))
print(sorted_data)
# 输出:
# [
# {'name': 'Bob', 'age': 22, 'score': 92},
# {'name': 'Charlie', 'age': 24, 'score': 85},
# {'name': 'Alice', 'age': 25, 'score': 88}
# ]
2. 按对象属性排序
如果列表中的元素是对象,可以通过对象的属性进行排序。
示例代码:
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f"{self.name} ({self.age})"people = [Person("Alice", 25),Person("Bob", 22),Person("Charlie", 24)
]# 按年龄排序
sorted_people = sorted(people, key=lambda p: p.age)
print(sorted_people) # 输出:[Bob (22), Charlie (24), Alice (25)]
四、总结
在 Python 中,对列表进行排序有多种方法,每种方法都有其独特的用途和特点。以下是关键要点:
-
sort()
方法:- 原地排序,直接修改原列表。
- 支持升序和降序排序。
- 支持自定义排序规则。
-
sorted()
函数:- 返回一个新的已排序列表,原列表保持不变。
- 支持升序和降序排序。
- 支持自定义排序规则。
-
自定义排序规则:
- 通过
key
参数,可以指定一个函数来决定排序的依据。 - 可以按多个条件排序。
- 可以按对象属性排序。
- 通过
通过合理使用这些方法,你可以高效地对列表进行排序。希望这篇文章能帮助你更好地理解和使用 Python 中的列表排序功能。