Python sorted() 函数和 sort() 方法的区别
概述
sorted()
函数和 sort()
方法都是 Python 内置函数,用于对序列进行排序。但是,它们在功能和适用性上有所不同。
sorted()
函数
sorted()
是一个全局函数,接受一个序列作为参数并返回一个新的已排序列表。它不会修改原始序列。
语法:
python
sorted(iterable, key=None, reverse=False)
参数:
iterable
:要排序的序列,例如列表、元组或集合。key
:可选,用于自定义排序的函数。reverse
:可选,布尔值,指示是否以降序排序。
返回:
一个新的已排序列表,其中包含原始序列中的元素。
sort()
方法
sort()
是列表和其他可变序列(例如元组)的方法。它原地对序列进行排序,这意味着它会修改原始序列。
语法:
python
list.sort(key=None, reverse=False)
参数:
key
:可选,用于自定义排序的函数。reverse
:可选,布尔值,指示是否以降序排序。
返回:
无。sort()
方法直接修改原始序列。
关键区别
以下是最重要的区别:
- 返回结果:
sorted()
返回一个新的已排序列表,而sort()
在序列上原地操作。 - 可变性:
sort()
只能应用于可变序列(列表、元组),而sorted()
可以用于任何序列类型。 - 内存消耗:
sorted()
创建一个新的列表,因此需要额外的内存。sort()
不需要额外的内存,因为它在序列上原地操作。
最佳用法
- 使用
sorted()
:- 当需要对序列进行排序并创建一份已排序的副本时。
- 当序列是不变的或需要自定义排序时。
- 使用
sort()
:- 当需要对可变序列进行排序并修改原始序列时。
- 当内存消耗是一个问题时。
示例
“`python
使用 sorted()
mylist = [5, 2, 8, 1, 3]
sortedlist = sorted(mylist) # 创建一个新的已排序列表
print(sortedlist) # 输出:[1, 2, 3, 5, 8]
print(my_list) # 输出:[5, 2, 8, 1, 3] (原始序列保持不变)
使用 sort()
mylist.sort() #原地对列表进行排序
print(mylist) # 输出:[1, 2, 3, 5, 8] (原始列表已修改)
“`
常见问题解答
1. 什么时候应该使用 sort()
而什么时候应该使用 sorted()
?
- 使用
sort()
对可变序列进行原地排序,以便节省内存。 - 使用
sorted()
创建一个新的已排序列表的副本。
2. key
参数如何使用?
key
参数允许使用自定义函数对序列进行排序。它接受一个元素并返回一个用于排序的键。
3. reverse
参数如何使用?
reverse
参数确定排序顺序。默认情况下,sorted()
和 sort()
以升序排序(从小到大)。将 reverse
设置为 True
以降序排序(从大到小)。
4. sorted()
和 sort()
的时间复杂度是多少?
对于大多数情况,sorted()
和 sort()
的时间复杂度都是 O(n log n),其中 n 是序列中的元素数量。
5. 哪一个更有效率?sorted()
还是 sort()
?
sort()
通常比 sorted()
更有效率,因为它不需要创建新的列表。但是,如果需要创建已排序列表的副本,那么 sorted()
是更合适的选择。
原创文章,作者:王利头,如若转载,请注明出处:https://www.wanglitou.cn/article_11890.html