Skip to content

Python 列表排序详解

列表排序是在编程中常见的操作。Python 提供了多种方法来对列表进行排序。本教程将深入浅出地介绍 Python 中列表排序的方法,并通过示例帮助你快速掌握。

Python 列表对象内置了一个非常方便的 sort() 方法,可以对列表中的元素进行原地排序。所谓原地排序,指的是直接修改原列表,而不是创建一个新的排序后的列表。sort() 方法默认使用小于号 < 来比较元素之间的大小关系。

sort() 方法详解

sort() 方法还接受两个可选的关键字参数,可以定制排序的行为:

  • key: 这个参数允许你指定一个函数,这个函数会应用于列表中的每一个元素,然后使用函数的返回值来进行排序。这在需要根据元素的某个特定属性进行排序时非常有用。
  • reverse: 这是一个布尔值参数,用于控制排序的顺序。如果设置为 True,列表将按降序排序;如果设置为 False (默认值),则按升序排序。

sort() 方法示例

python
# 数字列表排序
l = [34, 4, 6, 23]
l.sort()  # 默认升序排序
print(l)  # 输出: [4, 6, 23, 34]

l = [34, 4, 6, 23]
l.sort(reverse=True)  # 降序排序
print(l)  # 输出: [34, 23, 6, 4]

# 字符串列表排序 (按字母顺序)
l = ["Oh", "Hi", "Py", "ed"]
l.sort()
print(l)  # 输出: ['Hi', 'Oh', 'Py', 'ed'] (根据ASCII码排序)

# 字符串列表排序 (忽略大小写)
l = ["Oh", "Hi", "Py", "ed"]
l.sort(key=str.lower)  # 使用 str.lower 函数将字符串转换为小写后再排序
print(l)  # 输出: ['ed', 'Hi', 'Oh', 'Py']

在上面的例子中,str.lower 函数被用作 key 参数的值。这意味着在比较字符串之前,sort() 方法会先将它们转换为小写,然后再进行比较,从而实现忽略大小写的排序。

sorted() 函数

如果你不想修改原始列表,而是希望创建一个新的已排序的列表,可以使用内置的 sorted() 函数。 sorted() 函数接受一个可迭代对象(例如列表)作为参数,并返回一个新的已排序的列表,原始列表保持不变。

sorted() 函数示例

python
l = [34, 4, 6, 23]
new_l = sorted(l)  # 创建一个新的排序后的列表
print(new_l)  # 输出: [4, 6, 23, 34]
print(l) #输出: [34, 4, 6, 23] (原始列表未被修改)
  • sort() 是列表的一个方法,用于原地排序列表。
  • sorted() 是一个内置函数,返回一个新的已排序的列表,不改变原始列表。
  • key 参数可以指定一个函数,用于在排序之前对每个元素进行转换。
  • reverse 参数控制排序的顺序(升序或降序)。