Python | 对列表进行排序:sorted(), list.sort()

1. sorted() 函数

sorted() 是 Python 的内置函数,用于对任何可迭代对象进行排序,并返回一个新的已排序的列表。它不会修改原始的可迭代对象。

语法

sorted(iterable, key=None, reverse=False)

参数

  • iterable: 需要排序的可迭代对象(如列表、元组、字符串、字典的键等)。
  • key: 可选参数,用于指定一个函数,该函数会作用于可迭代对象的每个元素,并根据函数的返回值进行排序。默认值为 None,表示直接比较元素本身。
  • reverse: 可选参数,布尔值。如果为 True,则排序结果为降序;如果为 False(默认),则排序结果为升序

返回值

返回一个新的已排序的列表。

示例

# 对列表排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 对字符串排序
text = "python"
sorted_text = sorted(text)
print(sorted_text)  # 输出: ['h', 'n', 'o', 'p', 't', 'y']

# 对字典的键排序
data = {"b": 2, "a": 1, "c": 3}
sorted_keys = sorted(data)
print(sorted_keys)  # 输出: ['a', 'b', 'c']

特点

  • 不修改原始数据sorted() 返回一个新的列表,原始可迭代对象不会被修改
  • 适用于任何可迭代对象:可以对列表、元组、字符串、字典的键等进行排序。
  • 灵活性高:可以通过 keyreverse 参数自定义排序规则。

2. list.sort() 方法

概述

list.sort()列表对象的方法,用于对列表进行 原地排序,即直接修改原始列表,而不是返回一个新的列表。

语法

list.sort(key=None, reverse=False)

参数

  • key: 可选参数,用于指定一个函数,该函数会作用于列表的每个元素,并根据函数的返回值进行排序。默认值为 None,表示直接比较元素本身。
  • reverse: 可选参数,布尔值。如果为 True,则排序结果为降序;如果为 False(默认),则排序结果为升序。

返回值

list.sort() 没有返回值(返回 None),因为它直接修改原始列表。即若想将 list.sort() 的结果赋值给变量,会得到 None。

但如果想将排序后的结果赋值给变量,可以先复制原始列表,然后对副本调用 list.sort(),这样原始列表不会被修改。

示例

# 对列表排序
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()
print(numbers)  # 输出: [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 降序排序
numbers.sort(reverse=True)
print(numbers)  # 输出: [9, 6, 5, 5, 4, 3, 2, 1, 1]

# 使用 key 参数
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)  # 按字符串长度排序
print(words)  # 输出: ['date', 'apple', 'banana', 'cherry']

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
result = numbers.sort()  # result 是 None
print(result)  # 输出: None

# 复制列表
sorted_numbers = numbers.copy()
sorted_numbers.sort()  # 对副本排序
print("原始列表:", numbers)  # 输出: 原始列表: [3, 1, 4, 1, 5, 9, 2, 6, 5]
print("排序后的列表:", sorted_numbers)  # 输出: 排序后的列表: [1, 1, 2, 3, 4, 5, 5, 6, 9]

特点

  • 原地修改list.sort()直接修改原始列表,而不是返回一个新的列表。
  • 仅适用于列表list.sort() 是列表对象的方法,不能用于其他可迭代对象(如元组、字符串等)。
  • 无返回值list.sort() 返回 None,因此不能将它的结果直接赋值给变量。

sorted()list.sort() 的区别

是否修改原始数据

否(返回新列表)

是(原地排序)

返回值

返回排序后的新列表

返回

None

适用对象

任何可迭代对象(列表、元组等)

仅限列表

灵活性

更高(支持更多可迭代对象)

较低(仅限列表)

全部评论

相关推荐

07-04 16:00
门头沟学院 Java
点赞 评论 收藏
分享
湫湫湫不会java:1.在校经历全删了2.。这些荣誉其实也没啥用只能说,要的是好的开发者不是好好学生3.项目五六点就行了,一个亮点一俩行,xxx技术解决,xxx问题带来xxx提升。第一页学历不行,然后啥有价值的信息也没有,到第二页看到项目了,第一个项目九点,第二个项目像凑数的俩点。总体给人又臭又长,一起加油吧兄弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务