Python列表排序方法:sort()与sorted()完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Python列表排序方法:完整实战指南

数据排序是几乎所有应用程序中的核心操作——从处理用户输入到复杂的数据分析算法。Python的列表操作直观易用,其排序工具既灵活又强大,能够满足各种排序需求。

Python列表基础

Python列表是有序的可变集合,可以存储不同类型的数据元素,并通过索引方便地访问它们。

numbers = [5, 2, 9, 1, 5, 6]
words = ["banana", "apple", "cherry"]
mixed_list = [1, "hello", 3.14, True]

列表排序的核心方法

Python提供了两种主要的列表排序方式:sort()方法和sorted()函数。它们各有特点,适用于不同的场景。

sort()方法——原地排序

sort()方法会直接修改原始列表,并返回None。这种方式内存效率高,因为它不会创建新列表。

numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # 输出:[1, 2, 5, 9]
sort()方法的参数

sort()方法接受以下参数:

  • reverse:控制排序方向(True为降序,False为升序)
  • key:指定排序依据的函数
numbers = [5, 2, 9, 1]
numbers.sort(reverse=True)
print(numbers)  # 输出:[9, 5, 2, 1]

sorted()函数——返回新列表

sorted()函数返回一个新的已排序列表,而不会修改原始列表。当你需要保留原始元素顺序时,这个函数非常有用。

numbers = [5, 2, 9, 1]
new_numbers = sorted(numbers)
print(new_numbers)  # 输出:[1, 2, 5, 9]
print(numbers)      # 输出:[5, 2, 9, 1] —— 原始列表保持不变
使用sorted()进行降序排序
numbers = [5, 2, 9, 1]
sorted_desc = sorted(numbers, reverse=True)
print(sorted_desc)  # 输出:[9, 5, 2, 1]

排序方法对比

方法 是否修改原列表 返回值 适用场景
sort() 是 无(None) 不需要保留原始顺序时
sorted() 否 新列表 需要保留原始数据时

字符串列表排序

字母顺序排序

Python默认按字典序对字符串进行排序:

words = ["banana", "apple", "cherry"]
words.sort()
print(words)  # 输出:['apple', 'banana', 'cherry']

降序排序

words = ["banana", "apple", "cherry"]
words.sort(reverse=True)
print(words)  # 输出:['cherry', 'banana', 'apple']

字符串排序中的大小写处理

区分大小写的排序

默认情况下,排序区分大小写。在ASCII表中,大写字母排在小写字母之前:

words = ["Banana", "apple", "Cherry"]
print(sorted(words))  # 输出:['Banana', 'Cherry', 'apple']

忽略大小写的排序

使用参数key=str.lower可以实现不区分大小写的排序:

words = ["Banana", "apple", "Cherry"]
print(sorted(words, key=str.lower))  # 输出:['apple', 'Banana', 'Cherry']

复杂数据结构的排序

列表嵌套列表的排序

博客

书籍推荐