当前位置:首页>python>Python 列表排序超全攻略!3 分钟掌握 6 种实用用法

Python 列表排序超全攻略!3 分钟掌握 6 种实用用法

  • 2026-10-11 07:56:53
Python 列表排序超全攻略!3 分钟掌握 6 种实用用法
【写在前面】可以参看我的视频进行学习,喜欢的话,关注,点赞,分享。需要笔记代码,可以在评论区留言。

列表排序是 Python 编程中最常用、最基础的操作之一,不管是处理数据、开发项目还是日常刷题,都离不开它。

今天就用最简单、最清晰的步骤,带你吃透 Python 列表排序,新手也能直接上手!


一、Python 列表排序的 2 个核心方法

Python 给列表准备了2 种排序工具,用法完全不同,先分清它们:

1. list.sort() —— 原地排序(直接修改原列表)

  • 特点:直接在原列表上排序,不生成新列表,节省内存
  • 返回值:None(无返回结果)
  • 适用:不需要保留原列表时使用

2. sorted(list) —— 新建排序(保留原列表)

  • 特点:生成一个全新的排序后列表,原列表完全不变
  • 返回值:排序后的新列表
  • 适用:需要保留原始数据时使用

二、基础排序(最常用)

1. 升序排序(从小到大,默认)

方法 1:sort() 原地升序

# 数字列表
nums = [3, 1, 4, 2, 5]
nums.sort()
print(nums)  # 输出:[1, 2, 3, 4, 5]

# 字符串列表(按字母顺序)
words = ["banana", "apple", "cherry"]
words.sort()
print(words)  # 输出:['apple', 'banana', 'cherry']

方法 2:sorted() 新建升序

nums = [3, 1, 4, 2, 5]
new_nums = sorted(nums)

print("原列表:", nums)    # 原列表不变:[3, 1, 4, 2, 5]
print("新列表:", new_nums)# 排序后:[1, 2, 3, 4, 5]

2. 降序排序(从大到小)

只需要加一个参数:reverse=True

sort() 降序

nums = [3, 1, 4, 2, 5]
nums.sort(reverse=True)
print(nums)  # 输出:[5, 4, 3, 2, 1]

sorted() 降序

nums = [3, 1, 4, 2, 5]
new_nums = sorted(nums, reverse=True)
print(new_nums)  # 输出:[5, 4, 3, 2, 1]

三、进阶:自定义排序(按规则排序)

真实场景中,我们经常需要按指定规则排序,比如:

  • 按列表元素的长度
  • 按字典的某个 value
  • 按对象的某个属性

这时候用 key 参数!

1. 按字符串长度排序

words = ["python", "java", "c", "javascript"]

# 按字符串长度升序
words.sort(key=len)
print(words)  # 输出:['c', 'java', 'python', 'javascript']

2. 按字典的某个值排序(超级常用)

# 学生列表:包含姓名和分数
students = [
    {"name": "小明", "score": 88},
    {"name": "小红", "score": 95},
    {"name": "小刚", "score": 76}
]

# 按分数升序排序
students.sort(key=lambda x: x["score"])
print(students)

# 按分数降序排序
students.sort(key=lambda x: x["score"], reverse=True)

3. 按绝对值排序

nums = [-3, 1, -4, 2]
nums.sort(key=abs)  # 按绝对值大小排序
print(nums)  # 输出:[1, 2, -3, -4]

四、高级:复杂对象排序

如果是自定义类的对象,也能轻松排序:

classStudent:
def__init__(self, name, age):
        self.name = name
        self.age = age

# 创建对象列表
stu_list = [Student("小明", 18), Student("小红", 16), Student("小刚", 20)]

# 按年龄排序
stu_list.sort(key=lambda x: x.age)

五、快速反转列表(不排序,仅反转)

不是排序,但经常和排序一起用:

nums = [1, 2, 3, 4, 5]
nums.reverse()  # 原地反转
print(nums)     # 输出:[5, 4, 3, 2, 1]

六、2 个方法对比总结(必看)

方法
是否修改原列表
返回值
使用场景
list.sort()是None
不需要保留原数据
sorted(list)否
新列表
需要保留原列表

七、新手常见坑

  1. 不要把 sort() 赋值给变量
# 错误写法
nums = [3,1,2]
new_nums = nums.sort()  # new_nums 是 None!
print(new_nums)
  1. 不同类型数据不能排序(如数字 + 字符串)
# 报错!
[1, "a", 3].sort()

八、一句话总结

  1. 想保留原列表 → 用 sorted()
  2. 想直接改原列表 → 用 sort()
  3. 想自定义规则 → 加 key=规则
  4. 想倒序 → 加 reverse=True

总结

  1. Python 列表排序核心是 sort()(原地) 和 sorted()(新建)
  2. 基础排序:升序(默认)、降序(reverse=True)
  3. 高级排序:用 key 参数 自定义规则
  4. 日常开发优先用 sorted(),更安全(不破坏原数据)

最新文章

随机文章