Python 中 sort() 和 sorted() 的区别
在 Python 中,sort() 和 sorted() 函数都用于对列表中的元素进行排序。虽然它们的目的相似,但它们在功能和用途上存在着一些关键区别。
sort() 函数
sort() 是一个内置函数,它对列表中的元素进行原地排序。这意味着它会直接修改列表本身,而不会创建新的列表。以下是如何使用 sort() 函数:
python
my_list = [5, 2, 8, 1, 4]
my_list.sort()
print(my_list) # 输出:[1, 2, 4, 5, 8]
sorted() 函数
sorted() 是一个内置函数,它返回一个新列表,其中包含原始列表中已排序的元素。它不会修改原始列表。以下是如何使用 sorted() 函数:
python
my_list = [5, 2, 8, 1, 4]
new_list = sorted(my_list)
print(my_list) # 输出:[5, 2, 8, 1, 4]
print(new_list) # 输出:[1, 2, 4, 5, 8]
区别
| 特征 | sort() | sorted() |
|—|—|—|
| 修改原始列表 | 是 | 否 |
| 返回值 | 无 | 已排序的新列表 |
| 可选参数 | 可选,用于指定比较函数 | 可选,用于指定比较函数 |
| 内存使用 | 原地排序,低内存使用 | 创建新列表,高内存使用 |
| 性能 | 对于大型列表,速度较慢 | 对于大型列表,速度较快 |
比较函数
在 sort() 和 sorted() 中,都可以使用可选的比较函数来自定义排序顺序。比较函数需要接受两个参数(a 和 b),并返回以下值之一:
- 负值(a < b):a 排在 b 之前
- 0(a = b):a 和 b 相等
- 正值(a > b):a 排在 b 之后
以下是如何使用比较函数对列表按降序排序:
“`python
my_list = [5, 2, 8, 1, 4]
def descending_sort(a, b):
return b – a
mylist.sort(key=descendingsort)
print(my_list) # 输出:[8, 5, 4, 2, 1]
“`
何时使用 sort() 和 sorted()
使用 sort():
- 当需要直接修改列表时
- 当内存使用是主要考虑因素时
- 当列表较小时
使用 sorted():
- 当需要返回一个新排序的列表时
- 当需要使用自定义比较函数时
- 当列表较大时,需要更好的性能
问答
sort() 和 sorted() 之间的最主要区别是什么?
答:sort() 会修改原始列表,而 sorted() 则会返回一个新列表。在什么情况下使用 sort() 更合适?
答:当需要直接修改列表,并且内存使用是主要考虑因素时,例如在处理小型列表时。如何使用自定义比较函数对列表进行降序排序?
答:通过使用 sort() 或 sorted() 函数的 key 参数,传递一个自定义的比较函数,其中 a > b 时返回负值。为什么 sorted() 在处理大型列表时性能更好?
答:因为 sort() 需要原地排序,涉及元素的移动,而 sorted() 创建一个新列表,然后使用归并排序算法,这对于大型列表更加高效。sort() 和 sorted() 函数使用哪种排序算法?
答:sort() 使用快速排序算法,而 sorted() 使用归并排序算法。
原创文章,作者:常远雨,如若转载,请注明出处:https://www.wanglitou.cn/article_109510.html