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

排序函数--sorted()

发布时间:2023-06-07 05:43:19

在Python中,有一个很实用的内置函数——sorted()函数,它可以对列表、元组和字典等可迭代对象进行排序操作。这个函数的使用非常简单,它支持多种排序方式和排序规则,可以满足各种不同的排序需求,接下来我们来详细介绍它的用法。

一、sorted()函数的基本用法

我们先来看一下sorted()函数的基本语法:

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

参数解释:

1. iterable:要排序的可迭代对象,可以是列表、元组、字典等。

2. key:指定一个函数,用于排序过程中对每个元素进行处理。默认为None,表示不进行任何处理。我们可以按照自己的需求自定义函数,例如对元素进行取绝对值(key=abs)。

3. reverse:表示排序方式,如果为True,则表示降序排列;如果为False(默认),则表示升序排列。

下面我们给出一个简单的例子,对一个字典中的值进行排序。

# 字典

data = {'a':3, 'c':1, 'b':4}

# 排序

result = sorted(data.values())

print(result)

# [1, 3, 4]

首先,我们定义了一个字典data,包含了三个键值对。接着,我们使用sorted()函数对data的值进行排序,得到一个新的列表result。我们可以看到,result按照升序排列后,依次包含了值为1、3和4的元素。

二、key参数的用法

key参数用于指定一个函数,对于可迭代对象中的每个元素,sorted()函数会通过这个函数进行处理,然后再进行排序。这个处理函数可以是Python内置函数,也可以是自定义函数。一些常用的内置函数包括abs()、len()、sum()等。

下面我们再来看一个例子,对一个列表中的元素按照绝对值进行排序。

# 列表

data = [-3, -1, -4, 2, -5]

# 排序

result = sorted(data, key=abs)

print(result)

# [2, -1, -3, -4, -5]

首先,我们定义了一个包含了负数的列表data。接着,我们使用sorted()函数进行排序,其中关键字参数key被设置为abs。这个参数告诉sorted()函数,对于data中的每个元素,先对其求绝对值,然后再进行排序。最终,我们得到了一个按照绝对值升序排列的列表result。

三、reverse参数的用法

reverse参数用于控制排序方式,如果为True,则表示降序排列;如果为False,则表示升序排列。

下面我们来看一个例子,对一个包含了整数的列表进行降序排序。

# 列表

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

# 排序

result = sorted(data, reverse=True)

print(result)

# [5, 4, 3, 2, 1]

首先,我们定义了一个包含了整数的列表data。接着,我们使用sorted()函数进行排序,其中关键字参数reverse被设置为True。这样一来,sorted()函数会按照降序进行排序,最终我们得到了一个按照降序排列的列表result。

四、多重排序规则

在实际应用中,我们可能需要按照多个规则进行排序,比如对一个包含了学生信息的列表按照成绩和姓名进行排序。这时,我们可以通过key参数来定义一个函数,这个函数返回一个元组(tuple),其中包含了多个排序规则,sorted()函数会按照这个元组依次进行排序。

下面我们来看一个例子,对一个包含了学生信息的列表进行多重排序。

# 列表

students = [

  (60, 'Tom'),

  (90, 'Jack'),

  (80, 'Lucy'),

  (70, 'Bob')

]

# 排序

result = sorted(students, key=lambda x:(-x[0], x[1]))

print(result)

# [(90, 'Jack'), (80, 'Lucy'), (70, 'Bob'), (60, 'Tom')]

首先,我们定义了一个包含了学生信息的列表students,每个元素都是一个包含了成绩和姓名的元组。接着,我们使用sorted()函数进行排序,其中关键字参数key被设置为一个匿名函数lambda x:(-x[0], x[1])。这个函数返回了一个包含两个排序规则的元组, 个规则是成绩(注意,这里的成绩使用了负数,因为要进行降序排序);第二个规则是姓名。最终,我们得到了一个按照成绩和姓名进行排序的列表result。

五、结语

本文介绍了sorted()函数的基本用法和常见参数,希望能够对大家有所帮助。虽然这个函数的使用并不复杂,但是在实际运用中,我们可能会遇到一些复杂的场景,需要进行多重排序、按照自定义函数进行排序等操作。针对这些场景,我们可以根据需要自己编写相应的代码,利用Python强大的工具实现各种排序功能。