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

Python中的sorted()函数及其常用应用场景

发布时间:2023-05-27 14:14:57

Python中的sorted()函数是一个内置的排序函数,可用于对列表、元组、字典等可迭代对象进行排序。该函数可以接收三个参数:可迭代对象、key函数和reverse参数。其中,可迭代对象是必需参数,表示需要进行排序的对象;key函数是可选参数,用于自定义排序规则;reverse参数也是可选参数,用于控制排序的顺序,其默认值为False,表示升序排序。

以下是sorted()函数的常用应用场景:

1. 对列表进行排序

sorted()函数可以用于对列表进行排序,可以按升序或降序排列。例如:

lst = [5, 2, 8, 6, 1]
sorted_lst = sorted(lst)  # 升序排列
print(sorted_lst)  # [1, 2, 5, 6, 8]

sorted_lst = sorted(lst, reverse=True)  # 降序排列
print(sorted_lst)  # [8, 6, 5, 2, 1]

2. 对元组进行排序

sorted()函数也可以对元组进行排序。例如:

tpl = (5, 2, 8, 6, 1)
sorted_tpl = sorted(tpl)  # 升序排列
print(sorted_tpl)  # [1, 2, 5, 6, 8]

sorted_tpl = sorted(tpl, reverse=True)  # 降序排列
print(sorted_tpl)  # [8, 6, 5, 2, 1]

3. 对字典进行排序

由于字典是无序的键值对集合,不能直接用sorted()函数进行排序。但是,可以通过将字典转换为列表或元组,再对列表或元组进行排序。例如:

dic = {'a': 5, 'd': 2, 'c': 8, 'b': 6, 'e': 1}
sorted_dic = sorted(dic.items(), key=lambda x: x[1])  # 按值升序排列
print(sorted_dic)  # [('e', 1), ('d', 2), ('a', 5), ('b', 6), ('c', 8)]

sorted_dic = sorted(dic.items(), key=lambda x: x[1], reverse=True)  # 按值降序排列
print(sorted_dic)  # [('c', 8), ('b', 6), ('a', 5), ('d', 2), ('e', 1)]

其中,dic.items()函数将字典转换为一个由键值对元组组成的列表。key参数指定了排序规则,例如对值进行排序,可以用lambda函数取得键值对元组的第二个元素x[1]作为排序关键字。

4. 对类对象进行排序

对于自定义类对象,也可以使用sorted()函数进行排序,只需要在类中实现__lt__()方法(即小于运算符<的重载方法)。例如:

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def __lt__(self, other):
        return self.score < other.score  # 按成绩升序排列

students = [Student('Alice', 85), Student('Bob', 92), Student('Charlie', 78)]
sorted_students = sorted(students)
for student in sorted_students:
    print(student.name, student.score)

其中,__lt__()方法返回True时表示当前对象小于另一个对象,sorted()函数会按照这个方法的定义规则进行排序。

总之,sorted()函数是一个非常实用的函数,可以在很多场景下简化代码,提高效率。无论是对基本数据类型还是自定义类对象,都可以使用sorted()函数进行排序。