Python中的list.sort()和sorted()有什么区别?
主要的区别有:
- list.sort()是在list原地排序,不返回新list,而sorted()不会改变原list,而是返回一个新的已排序list。
- list.sort()只能用于list,sorted()可以用于任何可迭代对象,比如list、tuple、set等。
- list.sort()稍微快一点,因为它无需创造新的list。sorted()需要创建一个新的list来返回。
- list.sort()是list的方法,sorted()是内置函数。
- list.sort()没有key和reverse等参数,sorted()有这些参数用于自定义排序逻辑。
所以总结一下:
- 需要原地排序 list 用 list.sort()
- 需要新list排序或对任何可迭代对象排序 用 sorted()
- 需要附加排序参数(key、reverse等) 用 sorted()
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]