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

Python中的sorted()函数用于列表排序

发布时间:2023-06-18 14:03:42

Python中的sorted()函数用于对可迭代对象进行排序,包括列表、元组、字符串以及字典等。本文主要介绍sorted()函数用于列表排序的相关知识。

一、使用sorted()函数进行列表排序

sorted()函数的语法如下:

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

其中,iterable表示要排序的可迭代对象,如列表、元组、字符串等。key是可选参数,用于指定排序的关键字,例如按照元素的某个属性或函数返回值进行排序。reverse也是可选参数,用于控制升序或降序,默认为False表示升序。

下面我们以列表为例进行演示:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(sorted_lst)  # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

上面的代码中,我们定义了一个包含11个整数的列表lst,调用sorted()函数对其进行排序,并将结果赋值给新的变量sorted_lst。最后输出了排序后的列表。

二、按照关键字进行排序

有时候我们需要按照元素的某个属性或函数返回值进行排序,这时可以使用sorted()函数的关键字参数key来指定排序的关键字。例如,我们可以按照元素的绝对值进行排序:

lst = [-3, 1, -4, 1, 5, 9, 2, 6, -5, 3, -5]
sorted_lst = sorted(lst, key=abs)
print(sorted_lst)  # 输出:[1, 1, 2, 3, -3, -4, 5, -5, -5, 6, 9]

上面的代码中,我们通过在sorted()函数中指定key=abs来按照元素的绝对值进行排序。由于绝对值是一个函数,因此我们可以使用lambda函数来进行简化:

lst = [-3, 1, -4, 1, 5, 9, 2, 6, -5, 3, -5]
sorted_lst = sorted(lst, key=lambda x: abs(x))
print(sorted_lst)  # 输出:[1, 1, 2, 3, -3, -4, 5, -5, -5, 6, 9]

三、按照多个关键字进行排序

有时候我们需要按照多个关键字进行排序,例如按照学生成绩从高到低排序,如果分数相同则按照年龄从小到大排序。这时我们可以使用元组来指定多个关键字,元组中的第一个元素是主要的关键字,第二个元素是次要的关键字,以此类推。

students = [("Alice", 18, 90), ("Bob", 17, 95), ("Charlie", 18, 85), ("David", 17, 80)]
sorted_students = sorted(students, key=lambda x: (-x[2], x[1]))

for s in sorted_students:
    print(s)

上面的代码中,我们定义了一个包含4个学生元组的列表students,每个元组包含3个元素:姓名、年龄和成绩。在调用sorted()函数时,我们使用-lambda函数按照成绩(x[2])进行降序排序,如果成绩相同则按照年龄(x[1])进行升序排序。最后使用for循环输出排序后的列表。

四、使用reverse参数进行降序排序

默认情况下,sorted()函数会对列表进行升序排序。如果需要进行降序排序,可以通过指定reverse=True参数来实现。

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst, reverse=True)
print(sorted_lst)  # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

上面的代码中,我们将sorted()函数的reverse参数指定为True,以实现降序排序。

总结:

sorted()函数是Python中一个非常实用的排序函数,可以用于对列表、元组、字符串等可迭代对象进行排序。在使用sorted()函数时,需要注意key和reverse这两个可选参数的作用,可以根据实际需求进行指定。