“`html
在 Python 中 sort() 与 sorted() 的区别
简介
排序是数据科学中一项基本任务,在 Python 中有多种方法可以对序列进行排序。其中两个最常用的函数是 sort()
和 sorted()
。虽然这两个函数具有相似之处,但它们之间存在一些关键区别,在选择最适合特定任务的函数时了解这些区别至关重要。
sort() 函数
sort()
函数就地对列表进行排序,也就是说它会修改原始列表。它接受一个可选参数 key
,该参数是一个用于比较元素的函数。如果没有提供 key
,sort()
将使用元素的自然顺序进行排序(例如,数字按升序排序,字符串按字母顺序排序)。
以下是 sort()
函数的一个示例:
python
my_list = [5, 2, 8, 3, 1]
my_list.sort()
print(my_list) # [1, 2, 3, 5, 8]
使用 key
参数,我们可以定义自己的比较函数,例如以相反的顺序对元素进行排序:
“`python
def reverse_sort(x):
return -x
mylist.sort(key=reversesort)
print(my_list) # [8, 5, 3, 2, 1]
“`
sorted() 函数
sorted()
函数返回一个新的已排序列表,而不修改原始列表。它还接受一个可选的 key
参数,就像 sort()
函数一样。
以下是 sorted()
函数的一个示例:
python
my_list = [5, 2, 8, 3, 1]
sorted_list = sorted(my_list)
print(sorted_list) # [1, 2, 3, 5, 8]
主要区别
sort()
和 sorted()
函数的主要区别如下:
- 就地排序:
sort()
就地对列表进行排序,而sorted()
返回一个新的已排序列表。 - 对原始列表的影响:
sort()
会修改原始列表,而sorted()
不会。 - 返回值:
sort()
返回 None,而sorted()
返回一个新的已排序列表。
选择最佳函数
以下是选择在特定情况中使用 sort()
还是 sorted()
的一些准则:
- 使用
sort()
如果:- 你希望就地对列表进行排序,并且可以接受原始列表的更改。
- 你希望在对列表进行后续操作之前对其进行排序。
- 使用
sorted()
如果:- 你希望保留原始列表的原始顺序。
- 你希望以特定的顺序生成一个新的已排序列表。
- 你希望对不可变对象(例如元组或字符串)进行排序。
问答
sort()
和sorted()
函数有何区别?
回答:sort()
就地对列表进行排序,而sorted()
返回一个新的已排序列表。- 哪种函数会修改原始列表?
回答:sort()
会修改原始列表。 - 哪种函数适用于不可变对象?
回答:sorted()
适用于不可变对象。 - 什么时候使用
sort()
更合适?
回答:当我们希望就地对列表进行排序,并且可以接受原始列表的更改时,使用sort()
更合适。 - 什么时候使用
sorted()
更合适?
回答:当我们希望保留原始列表的原始顺序或希望生成一个新的已排序列表时,使用sorted()
更合适。
“`
原创文章,作者:王利头,如若转载,请注明出处:https://www.wanglitou.cn/article_7252.html