Python sort list:原地排序列表元素
Python sort list 会按默认顺序或自定义键对列表进行原地排序。 当列表需要重新排序以符合后续逻辑时使用它。 重要!原地排序会更新原始列表,而不会创建新列表。
Python Sort List 示例:原地排序
输出:
输出将显示在这里...
输出:
['Ana', 'Mia', 'Zoe']
示例解析
names起初是未排序的顺序,符合数据到达的顺序。names.sort()在原列表上排序,因此之后的使用都会看到新顺序。- 输出显示列表已按字母排序。
常见错误
错误 1:以为 sort() 会返回新列表。
scores = [88, 92, 75]
new_scores = scores.sort()
print(new_scores)
scores = [88, 92, 75]
scores.sort()
print(scores)
原因:list.sort() 总是返回 None,因为它会原地修改现有列表。
错误 2:在 Python 3 中对混合类型排序。
items = [3, "10", 2]
items.sort()
items = ["3", "10", "2"]
items.sort(key=int)
print(items)
原因:数字与字符串不能直接比较,因此你必须统一类型或提供 key。
错误 3:忘记字符串排序区分大小写。
names = ["ana", "Mia", "zoe"]
names.sort()
print(names)
names = ["ana", "Mia", "zoe"]
names.sort(key=str.lower)
print(names)
原因:默认情况下,大写字母会排在小写之前,名字排序可能看起来不自然。
sort list vs sorted:怎么选
使用 list.sort() 当… | 使用 sorted() 当… |
|---|---|
| 你已有列表并希望原地排序。 | 你需要新列表并保留原始顺序。 |
| 你希望最省内存的方式。 | 你要排序的是任意可迭代对象,不只是列表。 |
可以接受方法返回 None。 | 你希望得到新的排序结果。 |
经验法则:需要原列表改变时用 list.sort();需要单独的排序结果时用 sorted()。
性能考虑
list.sort() 更省内存,因为它重排已有列表而不是创建新列表。如果不需要保留原顺序,它通常也是最快的方式。key 函数对每个元素只调用一次,因此在大列表中保持它简单。若必须保留原列表,sorted() 会用额外内存换取安全性。
更多列表排序模式
按派生键排序,例如长度。
labels = ["盒子", "容器", "箱子"]
labels.sort(key=len)
print(labels)
当展示规则不是字母顺序而是长度时,这很有用。 它会在原列表上应用自定义规则。
降序排序用于排行榜。
scores = [88, 92, 75]
scores.sort(reverse=True)
print(scores)
降序常用于 Top-N 展示,reverse=True 让代码更简洁。
列表仍是原地排序,只是方向相反。
何时使用 Python sort list
- 当需要对列表重新排序,并在后续多处复用时。
- 当你希望减少内存占用,避免创建第二个列表时。
- 当自然顺序不符合需求时,用
key指定排序规则。 - 如果必须保留原始顺序,使用
sorted()或先复制列表。 - 对非列表的可迭代对象避免使用,除非显式转换为列表。