如何在 Python 中对列表进行排序(升序和降序)
了解如何在 Python 中使用 sort() 方法和sorted() 函数对列表进行排序。发现自定义键排序和逆序示例。
概述
对数据进行排序是编程中最常见的任务之一,无论您是按年龄排序用户配置文件、按价格列出产品还是组织搜索结果。 Python 提供了两种内置的、高度优化的列表排序方法:“list.sort()”方法和“sorted()”函数。两者都使用名为 Timsort 的高效排序算法,其运行时间复杂度为 O(N log N)。
两者之间的主要区别是可变性。 “list.sort()”方法对列表进行就地排序,这意味着它直接修改原始列表并返回“None”。另一方面,“sorted()”函数保持原始列表不变并返回一个全新的排序列表。这种区别至关重要:当您想要节省内存并且不需要原始顺序时,请使用“sort()”;当您需要保持原始列表完整或对元组或字典等非列表可迭代对象进行排序时,请使用“sorted()”。
两种排序方法都接受两个可选的关键字参数:“reverse”和“key”。 `reverse` 参数是一个布尔值;将其设置为“True”按降序(反向)顺序对列表进行排序。 “key”参数接受一个在比较之前应用于每个元素的函数。这允许复杂的排序逻辑,例如按长度对字符串列表进行排序,或按特定键对字典列表进行排序。
代码和执行输出
此代码演示了使用 sort() 和sorted() 对数字列表进行排序、反向排序以及按字符串长度自定义键排序。
numbers = [42, 7, 12, 89, 23]
# 1. Using sorted() (returns new list)
new_sorted = sorted(numbers)
print("Original:", numbers)
print("Sorted new list:", new_sorted)
# 2. Using sort() (in-place modification)
numbers.sort()
print("Modified original list:", numbers)
# 3. Sorting in reverse (descending)
numbers.sort(reverse=True)
print("Reverse sorted list:", numbers)
# 4. Custom sorting (by string length)
words = ["banana", "pear", "apple", "fig"]
words.sort(key=len)
print("Sorted by length:", words)Original: [42, 7, 12, 89, 23]
Sorted new list: [7, 12, 23, 42, 89]
Modified original list: [7, 12, 23, 42, 89]
Reverse sorted list: [89, 42, 23, 12, 7]
Sorted by length: ['fig', 'pear', 'apple', 'banana']逐步实施
- 使用sorted()函数对列表的副本进行排序,而不更改原始数据。
- 直接在列表对象上使用 .sort() 方法就地修改它并节省内存。
- 传递reverse=True作为参数以按降序对项目进行排序。
- 使用 key=lambda x: ... 根据自定义属性(如长度或嵌套值)对元素进行排序。
常见问题解答
list.sort()和sorted()有什么区别?
list.sort() 就地修改列表并返回 None,而sorted() 则保持原始列表不变并返回一个新的排序列表。
如何按键对字典列表进行排序?
将 key 参数与 lambda 函数或operator.itemgetter 一起使用。例如:list.sort(key=lambda item: item["age"])。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。