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

Python中的sorted()函数:对序列/列表进行排序。

发布时间:2023-06-18 23:46:24

Python中的sorted()函数是一种非常常用的排序工具,它可以对序列或列表进行排序,将元素按照指定的规则重新排列。

sorted()函数的定义如下所示:

sorted(iterable, key=None, reverse=False)

其中,参数iterable是待排序的序列或列表;参数key是排序规则,可以自定义;参数reverse是排序方向,True表示降序,False表示升序,默认为False。

下面,我们将分别从排序原理、使用方法、排序规则以及时间复杂度四个方面详细介绍sorted()函数。

一、排序原理

sorted()函数采用Timsort排序算法,也称为归并排序,是一种兼备快速排序和归并排序优点于一体的排序算法。

Timsort算法的核心思想是把序列分割成若干个小块,对每块进行排序,然后再将这些排序后的小块组合成一个有序的大序列。具体实现过程中,Timsort会维护一个栈,用来存放待处理的子序列,直到所有子序列都处理完毕为止。

Timsort算法的时间复杂度为O(nlogn),是一种高效的排序算法,在数据量较大且需要稳定排序时是一种有效的选择。

二、使用方法

使用sorted()函数进行排序非常简单,只需按照以下格式调用函数即可:

sorted(iterable, key=None, reverse=False)

例如,我们有以下列表:

numbers = [3, 6, 2, 9, 1, 5]

我们可以使用sorted()函数对其进行排序:

sorted_numbers = sorted(numbers)

print(sorted_numbers) # [1, 2, 3, 5, 6, 9]

上述代码将numbers列表按照升序排序,生成一个新的已排序列表sorted_numbers。

如果我们需要按照降序进行排序,只需将sorted()函数的第三个参数reverse设置为True:

sorted_numbers = sorted(numbers, reverse=True)

print(sorted_numbers) # [9, 6, 5, 3, 2, 1]

上述代码将numbers列表按照降序排序,生成一个新的已排序列表sorted_numbers。

三、排序规则

除了默认的升序排序规则外,sorted()函数还支持自定义排序规则。在sorted()函数中,我们可以使用参数key指定自定义排序规则。

例如,我们有以下学生信息列表:

students = [

  {'name': 'Tom', 'age': 20},

  {'name': 'Mary', 'age': 19},

  {'name': 'Jack', 'age': 22},

  {'name': 'Amy', 'age': 21}

]

我们可以使用sorted()函数按照学生姓名进行排序:

sorted_students = sorted(students, key=lambda student: student['name'])

print(sorted_students)

# [{'name': 'Amy', 'age': 21}, {'name': 'Jack', 'age': 22}, {'name': 'Mary', 'age': 19}, {'name': 'Tom', 'age': 20}]

上述代码将学生信息列表按照姓名的字母表顺序进行排序,生成一个新的已排序列表sorted_students。

我们还可以按照学生年龄进行排序:

sorted_students = sorted(students, key=lambda student: student['age'])

print(sorted_students)

# [{'name': 'Mary', 'age': 19}, {'name': 'Tom', 'age': 20}, {'name': 'Amy', 'age': 21}, {'name': 'Jack', 'age': 22}]

上述代码将学生信息列表按照年龄进行排序,生成一个新的已排序列表sorted_students。

在使用自定义排序规则时,我们需要使用lambda表达式将排序规则传递给key参数。

四、时间复杂度

sorted()函数采用Timsort排序算法,时间复杂度为O(nlogn)。在处理大量数据时,sorted()函数的效率较高,但在数据量非常小的情况下,可能会出现sorted()函数比其他排序方法效率低的情况。

由于sorted()函数采用稳定排序算法,因此在需要稳定排序时,sorted()函数是一种较好的选择。

总结

本文对Python中的sorted()函数进行了详细介绍,包括排序原理、使用方法、排序规则以及时间复杂度等方面。在实际开发中,sorted()函数是一种非常常用的排序工具,对于数据量较大、需要稳定排序的场景,它是一种高效的选择。