pin_drop当前位置:知识文库 ❯ 图文

Python列表sort方法

概述

sort() 方法用于对列表进行原地排序,默认按升序排列。它支持通过 key 参数自定义排序规则,通过 reverse 参数控制升序或降序。sort() 是 Python 中最灵活、最强大的排序工具之一。


语法

代码示例

list.sort(key=None, reverse=False)
参数 说明
key 可选,排序依据的函数,默认为 None
reverse 可选,True 为降序,False 为升序(默认)

返回值None(原地修改列表)


基本用法

升序排序

代码示例

nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort()
print(nums)

输出:

代码示例

[1, 1, 2, 3, 4, 5, 6, 9]

降序排序

代码示例

nums = [3, 1, 4, 1, 5, 9, 2, 6]
nums.sort(reverse=True)
print(nums)

输出:

代码示例

[9, 6, 5, 4, 3, 2, 1, 1]

字符串排序

代码示例

fruits = ["banana", "apple", "cherry", "date"]
fruits.sort()
print(fruits)

输出:

代码示例

['apple', 'banana', 'cherry', 'date']

key 参数

key 参数接受一个函数,该函数作用于每个元素,排序依据是函数的返回值。

按字符串长度排序

代码示例

words = ["banana", "pie", "Washington", "book"]
words.sort(key=len)
print(words)

输出:

代码示例

['pie', 'book', 'banana', 'Washington']

按绝对值排序

代码示例

nums = [-5, 3, -1, 4, -2]
nums.sort(key=abs)
print(nums)

输出:

代码示例

[-1, -2, 3, 4, -5]

按元组的某个元素排序

代码示例

students = [("Alice", 85), ("Bob", 92), ("Charlie", 78)]
students.sort(key=lambda x: x[1])
print(students)

输出:

代码示例

[('Charlie', 78), ('Alice', 85), ('Bob', 92)]

按字典的某个键排序

代码示例

people = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25},
    {"name": "Charlie", "age": 35}
]
people.sort(key=lambda x: x["age"])
print(people)

输出:

代码示例

[{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

sort 与 sorted 对比

特性 sort() sorted()
适用类型 列表 任何可迭代对象
修改方式 原地修改 返回新列表
返回值 None 排序后的新列表
原列表 被修改 不变

代码示例

a = [3, 1, 2]
b = [3, 1, 2]

a.sort()
c = sorted(b)

print("sort后a:", a)
print("sorted后b:", b)
print("sorted返回c:", c)

输出:

代码示例

sort后a: [1, 2, 3]
sorted后b: [3, 1, 2]
sorted返回c: [1, 2, 3]

常见应用场景

多条件排序

代码示例

students = [
    ("Alice", 85, 20),
    ("Bob", 85, 18),
    ("Charlie", 92, 19)
]
students.sort(key=lambda x: (-x[1], x[2]))
print(students)

输出:

代码示例

[('Charlie', 92, 19), ('Alice', 85, 20), ('Bob', 85, 18)]

不区分大小写排序

代码示例

words = ["banana", "Apple", "cherry", "Banana"]
words.sort(key=str.lower)
print(words)

输出:

代码示例

['Apple', 'banana', 'Banana', 'cherry']

注意事项

注意:原地修改:sort() 返回 None,不要写成 list = list.sort()。如果需要保留原列表,使用 sorted()

注意:类型一致性:列表中的元素必须是可比较的,不同类型混排会报错(如 int 和 str)。

注意:排序稳定性:Python 的排序是稳定排序,相等元素的相对顺序保持不变。


小结

  • sort():原地排序,返回 Nonesorted() 返回新列表

  • key 参数:自定义排序规则,reverse=True 降序排列

  • 排序稳定性:相等元素的相对顺序不变

  • 保留原列表:需要保留原列表时使用 sorted() 函数


练习题

练习1

练习1

给定列表 words = ["Hello", "world", "Python", "is", "awesome"],按字符串长度从长到短排序,打印结果。

练习2

练习2

给定学生列表 students = [{"name": "Alice", "score": 85}, {"name": "Bob", "score": 92}, {"name": "Charlie", "score": 85}],先按分数降序排列,分数相同时按姓名升序排列。

常见问题

sort() 和 sorted() 有什么区别?

sort() 是列表的方法,会原地修改原列表并返回 None;sorted() 是内置函数,适用于任何可迭代对象,返回一个新列表而不改变原对象。需要保留原列表时应使用 sorted()。

key 参数的作用是什么?如何使用?

key 参数接受一个函数,该函数作用于每个元素,排序依据是函数的返回值。例如 key=len 按长度排序,key=str.lower 按小写形式排序,key=lambda x: x[1] 按元组第二个元素排序。

Python 的排序是稳定的吗?

是的,Python 的排序算法(Timsort)是稳定排序,这意味着相等元素的相对顺序在排序后保持不变。这个特性在多条件排序时非常有用。

标签: Python 列表方法 sort 排序 key参数 Python教程

本文涉及AI创作

内容由AI创作,请仔细甄别

list快速访问

上一篇: Python列表pop方法 下一篇: Python列表reverse方法

poll相关推荐

作者头像 智能小晨 python

Python元组命名namedtuple

发布日期 2026-05-31
深入学习Python命名元组namedtuple,掌握字段访问、_make创建、_asdict转字典、_replace替换字段等核心方法。理解命名元组与普通元组的区别,写出更清晰易读的Python代码。
作者头像 智能小晨 python

Python元组解包

发布日期 2026-05-31
全面学习Python元组解包技巧,包括基本解包、星号扩展解包、嵌套解包、交换变量和函数多值返回。掌握优雅的Python赋值语法,让你的代码更简洁高效。
作者头像 智能小晨 python

Python元组index方法

发布日期 2026-05-31
深入学习Python元组index()方法,掌握元素索引查找技巧。了解index()语法、指定范围查找、安全查找方法和实际应用场景,避免ValueError异常,提升Python编程效率。
作者头像 智能小晨 python

Python元组count方法

发布日期 2026-05-31
深入学习Python元组count()方法,掌握元素出现次数统计技巧。了解count()语法、性能优化建议、嵌套元组统计和实际应用场景,配合练习题巩固所学知识。