在 Python 3 中,sorted()
和 sort()
都是用于对序列(如列表、元组)进行排序的函数。然而,它们之间存在一些关键的区别。
sorted()
sorted()
返回一个新的已排序序列,而不会修改原始序列。- 它接受一个可选的
key
参数,该参数指定用于排序的函数。 - 它还可以接受一个
reverse
参数,该参数指定排序方向(升序或降序)。
sort()
sort()
直接对原始序列进行排序,并修改其内容。- 它没有
key
或reverse
参数。
示例
以下示例展示了 sorted()
和 sort()
之间的区别:
“`python
my_list = [5, 2, 8, 1, 4]
使用 sorted() 返回一个新的已排序列表
sortedlist = sorted(mylist)
print(sorted_list) # 输出: [1, 2, 4, 5, 8]
使用 sort() 直接对原始列表进行排序
mylist.sort()
print(mylist) # 输出: [1, 2, 4, 5, 8]
“`
在上述示例中,sorted()
返回了一个新的已排序列表,而 sort()
直接对原始列表进行了排序。
性能
一般来说,sorted()
比 sort()
慢,因为 sorted()
需要创建并返回一个新的列表,而 sort()
直接修改原始序列。但是,对于较小的序列,性能差异可以忽略不计。
用法指南
下表总结了何时使用 sorted()
和 sort()
的指南:
| 用途 | 函数 |
|—|—|
| 需要返回一个新的已排序序列 | sorted()
|
| 需要对序列进行排序,并修改其内容 | sort()
|
| 需要使用自定义排序函数 | sorted()
|
| 需要指定排序方向(升序或降序) | sorted()
|
常见问题解答
sorted()
和sort()
是否可以对不同的数据类型进行排序?
是的,sorted()
和sort()
都可以对不同的数据类型进行排序,包括数字、字符串、列表和元组。sorted()
中的key
参数如何工作?key
参数指定了一个函数,该函数用于将序列中的每个元素转换为一个用于排序的键。此键可以是任何数据类型。sort()
可以稳定地对序列进行排序吗?
不,sort()
不会稳定地排序。稳定排序意味着具有相同键的元素在排序后保持其相对顺序。何时使用
sorted()
而不是sort()
?
建议在需要返回一个新的已排序序列或者需要使用自定义排序函数或指定排序方向时使用sorted()
。否则,可以使用sort()
直接对原始序列进行排序。哪种函数更快,
sorted()
还是sort()
?sort()
通常比sorted()
快,因为它直接修改原始序列。但是,对于较小的序列,性能差异可以忽略不计。
原创文章,作者:田玉雅,如若转载,请注明出处:https://www.wanglitou.cn/article_48561.html