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()函数进行排序。
