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()
都具有相同的key
和reverse
可选参数,并且可以在进行比较之前对每个列表元素调用这些参数。
何时使用每个方法
当需要改变列表并且不希望恢复原始元素顺序时,应使用list.sort()
。另一方面,当要排序的对象是可迭代对象(例如列表、元组、字典、字符串)且期望的结果是包含所有元素的已排序列表时,应使用sorted()
。