欢迎访问宙启技术站
智能推送

Python排序函数:sorted()、sort()、reversed()区别解析

发布时间:2023-05-22 21:35:59

在Python中,排序是一个常见的操作。Python排序函数有sorted()、sort()和reversed()等。本文将分别对这三个排序函数进行介绍与比较。

1. sorted()函数

sorted()是一个内置函数,它接受一个可迭代的对象和两个可选的参数key和reverse。其中key是一个函数,用于从每个元素中提取一个标准用于排序,reverse是一个布尔值,用于决定升序还是降序排序。调用sorted()函数后,会返回一个新的排好序的列表。

示例代码:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst_sorted = sorted(lst)
print(lst_sorted)

输出:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

2. sort()函数

sort()函数是list对象的一个方法,不同于sorted()函数可以对任意可迭代的对象进行排序。sort()函数不返回任何值,而是直接在原来的列表上排序。

示例代码:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst)

输出:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

3. reversed()函数

reversed()函数可以对序列进行反转操作,返回一个反向的迭代器对象。reversed()函数不返回列表,而是返回一个迭代器,可以通过list()转为列表。

示例代码:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst_reversed = list(reversed(lst))
print(lst_reversed)

输出:

[5, 3, 5, 6, 2, 9, 5, 1, 4, 1, 3]

以上是三种排序函数的使用方法,但它们之间存在一些区别,主要体现在以下方面:

1. 排序结果的稳定性:sorted()和sort()函数都可以实现稳定排序,也就是说如果有多个元素具有相同的key,在排序后它们的相对位置不变。而reversed()函数并不涉及排序,因此没有稳定性问题。

2. 对原列表的影响:sorted()函数和reversed()函数本身不对原列表进行修改,而sort()函数会直接在原列表上进行排序。

3. 对可迭代对象的支持:sorted()函数可以对任何可迭代对象进行排序,而sort()函数只能对list对象进行排序。reversed()函数能够对任何可迭代对象进行反转,也即支持对不可变对象进行反转操作。

综上所述,当需要对可迭代对象进行排序操作时,应该优先选择sorted()函数,因为其既可以实现稳定排序,还可以对任何可迭代对象进行排序。而当只需要对列表进行排序时,可以使用sort()函数,因为它会直接修改原列表,相比之下更加高效。需要对序列进行反转操作时,可以使用reversed()函数。