📅  最后修改于: 2023-12-03 15:20:11.278000             🧑  作者: Mango
在 Python 中,sort
和 sorted
都是用于对列表进行排序的函数,它们之间的区别在以下几个方面:
sort
是原地排序函数,它会直接修改原列表,不会返回排序结果。而 sorted
则是返回排序结果的函数,它不会修改原列表。
以下是 sort
和 sorted
的使用示例:
a = [3, 1, 4, 2, 5]
a.sort() # 对原列表进行排序
print(a) # 输出 [1, 2, 3, 4, 5]
b = [3, 1, 4, 2, 5]
c = sorted(b) # 返回排好序的列表
print(b) # 输出 [3, 1, 4, 2, 5]
print(c) # 输出 [1, 2, 3, 4, 5]
sort
只能用于列表,而 sorted
可以用于任何可迭代对象,比如元组、集合等。
以下是 sort
和 sorted
对可迭代对象的支持对比:
a = (3, 1, 4, 2, 5)
a.sort() # TypeError: 'tuple' object has no attribute 'sort'
b = (3, 1, 4, 2, 5)
c = sorted(b) # 返回排好序的列表
print(b) # 输出 (3, 1, 4, 2, 5)
print(c) # 输出 [1, 2, 3, 4, 5]
sort
只能用于列表中元素类型相同的情况,如果列表中有不同类型的元素,则会抛出 TypeError
。
以下是 sort
对混合类型的列表的处理:
a = [3, 1, 'a', 2, 5]
a.sort() # TypeError: '<' not supported between instances of 'str' and 'int'
而 sorted
则没有这个问题。
sorted
函数可以接收一个 key
参数,用于指定排序时使用的比较函数,也可以接收一个 reverse
参数,用于指定是否要反向排序。
以下是 sorted
函数的关键字参数示例:
a = ['abc', 'ab', 'abcd', 'a']
b = sorted(a, key=len) # 按照字符串长度排序
print(b) # 输出 ['a', 'ab', 'abc', 'abcd']
c = sorted(a, key=len, reverse=True) # 按照字符串长度反向排序
print(c) # 输出 ['abcd', 'abc', 'ab', 'a']
综上所述,sort
和 sorted
在使用上存在一些区别,在选择使用时需要根据实际情况来决定。