Skip to content

Python中list.sort()和sorted()的区别是什么?

Python提供了两种方法来对列表进行排序,即内置的列表方法list.sort()和内置函数sorted()。虽然两者都可以对列表的元素进行排序,但如果使用不当,可能会产生意外或不希望的结果。

区别和相似之处

两者之间的主要区别在于,list.sort()会就地对列表进行排序,改变其索引并返回None,而sorted()会返回一个新的已排序列表,原始列表保持不变。另一个区别是,sorted()接受任何可迭代对象,而list.sort()list类的方法,只能用于列表。

nums = [2, 3, 1, 5, 6, 4, 0]

print(sorted(nums))   # [0, 1, 2, 3, 4, 5, 6]
print(nums)           # [2, 3, 1, 5, 6, 4, 0]

print(nums.sort())    # None
print(nums)           # [0, 1, 2, 3, 4, 5, 6]

list.sort()sorted()都具有相同的keyreverse可选参数,并且可以在进行比较之前对每个列表元素调用这些参数。

何时使用每个方法

当需要改变列表并且不希望恢复原始元素顺序时,应使用list.sort()。另一方面,当要排序的对象是可迭代对象(例如列表、元组、字典、字符串)且期望的结果是包含所有元素的已排序列表时,应使用sorted()