Python 提供了两种对列表进行排序的方法,内置列表方法list.sort()和内置函数sorted()。尽管两者都会对列表的元素进行排序,但如果使用不当,它们可能会产生意外或不希望的结果。
异同两者之间的主要区别在于list.sort()将对列表进行就地排序,改变其索引并返回None,而sorted()将返回一个新的排序列表,而原始列表保持不变。另一个区别是sorted()接受任何可迭代的 whilelist.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()当要排序的对象是一个可迭代对象(例如列表、元组、字典、字符串)并且期望的结果是一个包含所有元素的排序列表时,应该使用它。



