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

Python中的sorted()函数如何工作?如何使用它来排序列表?

发布时间:2023-06-04 05:31:24

sorted()函数是Python内置函数之一,用于对序列进行排序。它可以对列表、元组、字典等序列类型进行排序。本文将详细介绍sorted()函数的工作原理,以及如何使用它对列表进行排序。

1. sorted()函数的工作原理

sorted()函数接受一个可迭代对象作为参数,返回一个排好序的列表。它可以接受两个可选参数key和reverse。

key是一个函数,用于从可迭代对象中的每个元素中提取一个用于比较的键值。默认为None,即对可迭代对象的每个元素进行直接比较。

reverse是一个布尔值,用于指定排序方式是否为降序,默认为False,即升序排序。

当sorted()函数对可迭代对象进行排序时,它实际上是先将可迭代对象转换成一个列表,然后对列表进行排序。

2. 使用sorted()函数对列表进行排序

下面将介绍使用sorted()函数对列表进行排序的几种使用方式和示例。

1. 对数字列表进行排序

可将一个数字列表传递给sorted()函数,使其升序排列,如下所示:

nums = [3, 2, 1, 5, 4]

sorted_nums = sorted(nums)

print(sorted_nums)  # [1, 2, 3, 4, 5]

也可以使用reverse=True参数将其降序排列,如下所示:

nums = [3, 2, 1, 5, 4]

sorted_nums = sorted(nums, reverse=True)

print(sorted_nums)  # [5, 4, 3, 2, 1]

2. 对字符串列表进行排序

将一个字符串列表传递给sorted()函数,可以按字典序对字符串进行排序,如下所示:

words = ["apple", "banana", "carrot"]

sorted_words = sorted(words)

print(sorted_words)  # ['apple', 'banana', 'carrot']

也可以使用key参数按字符串长度排序,如下所示:

words = ["apple", "banana", "carrot"]

sorted_words = sorted(words, key=len)

print(sorted_words)  # ['apple', 'carrot', 'banana']

3. 对列表中复杂元素进行排序

对于包含复杂元素的列表,可以使用key参数从每个元素中提取一个可比较的键值进行排序。

例如,对于包含元组的列表,可以按元组中的某个元素进行排序,如下所示:

students = [("Tom", 20), ("Mary", 18), ("Lucy", 22)]

sorted_students = sorted(students, key=lambda x: x[1])

print(sorted_students)  # [('Mary', 18), ('Tom', 20), ('Lucy', 22)]

lambda表达式是匿名函数,上面的代码中lambda x: x[1]表示从每个元组中提取第二个元素作为键值进行排序。

4. 对列表进行原地排序

除了生成一个新的排好序的列表,sorted()函数还可以对原列表进行原地排序,即修改原列表的元素顺序而不生成新的列表。

可以使用列表的sort()方法实现原地排序,具体用法如下所示:

nums = [3, 2, 1, 5, 4]

nums.sort()

print(nums)  # [1, 2, 3, 4, 5]

同样地,也可以使用reverse=True参数将其降序排列,如下所示:

nums = [3, 2, 1, 5, 4]

nums.sort(reverse=True)

print(nums)  # [5, 4, 3, 2, 1]

注意,sort()方法和sorted()函数的区别在于sort()方法是对原列表进行排序,不会返回一个新的列表,而sorted()函数是生成一个排好序的新列表。

综上所述,sorted()函数是Python内置的一个排序函数,可以对列表、元组、字典等序列类型进行排序。它可以按照升序或降序排列,也可以根据key参数指定排序规则。在使用sorted()函数时,需要注意选择合适的排序方式和参数。