MST

星途 面试题库

面试题:Python中不同列表排序方法性能对比相关基础

在Python中,有`list.sort()`方法和`sorted()`函数两种常见的列表排序方式,请简要说明它们的区别,并阐述在一般情况下哪种方式在性能上更优及原因。
27.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 返回值
    • list.sort() 方法是对列表本身进行排序,它没有返回值,会直接修改原列表。例如:
my_list = [3, 1, 2]
result = my_list.sort()
print(result)  # 输出 None
print(my_list)  # 输出 [1, 2, 3]
  • sorted() 函数会返回一个新的已排序列表,原列表保持不变。例如:
my_list = [3, 1, 2]
new_list = sorted(my_list)
print(new_list)  # 输出 [1, 2, 3]
print(my_list)  # 输出 [3, 1, 2]
  1. 适用对象
    • list.sort() 只能用于列表对象。
    • sorted() 可以用于任何可迭代对象,例如列表、元组、集合等,并且返回的始终是一个列表。例如:
my_tuple = (3, 1, 2)
new_list = sorted(my_tuple)
print(new_list)  # 输出 [1, 2, 3]

性能比较

在一般情况下,list.sort() 在性能上更优。原因如下:

  • list.sort() 是列表对象的方法,它直接在原列表上进行操作,避免了创建新列表的开销。而 sorted() 函数每次都要创建一个新的列表对象来存储排序后的结果。当处理大型列表时,创建新列表所消耗的内存和时间成本会更加明显。所以,当不需要保留原列表,且对性能要求较高时,优先使用 list.sort() 方法;当需要保留原列表,或者对非列表的可迭代对象进行排序时,使用 sorted() 函数。