Python中使用sorted函数做什么?如何指定自定义排序规则?
发布时间:2023-06-26 13:29:49
sorted函数是Python中内置的一个非常强大的函数,它用于对某个可迭代对象(比如列表、元组等)进行排序操作,并返回一个新的已排序的对象。
使用sorted函数非常简单,只需要传入要进行排序的可迭代对象即可:
numbers = [3, 1, 4, 2, 7, 5, 6] sorted_numbers = sorted(numbers) print(sorted_numbers) # 输出 [1, 2, 3, 4, 5, 6, 7]
上面的例子中,我们传入了一个列表numbers,并使用sorted函数对其进行排序,结果保存在变量sorted_numbers中。程序输出了已排序的列表。
在默认情况下,sorted函数会按照元素本身的大小进行排序(比如上面的例子中,元素是整数,按照数值大小进行排序)。但如果要对自定义类型的对象进行排序,例如下面的Person类的实例:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f'{self.name}({self.age})'
我们可以借助sorted函数的key参数来指定排序规则。例如,我们可以根据Person实例的年龄进行排序,代码如下:
people = [Person('Tom', 20), Person('Jerry', 18), Person('Alice', 22)]
sorted_people = sorted(people, key=lambda p: p.age)
print(sorted_people)
# 输出 [Jerry(18), Tom(20), Alice(22)]
在上面的代码中,我们传入了一个lambda函数作为key参数,这个lambda函数接收一个Person对象作为参数,返回其age属性,表示按照年龄进行排序。
还可以使用reverse参数来指定排序的顺序,例如下面的代码将人员按照年龄从大到小进行排序:
sorted_people = sorted(people, key=lambda p: p.age, reverse=True) print(sorted_people) # 输出 [Alice(22), Tom(20), Jerry(18)]
除了lambda函数之外,还可以使用自定义函数作为key参数,例如:
def get_name_length(p):
return len(p.name)
sorted_people = sorted(people, key=get_name_length)
这个例子中,我们定义了一个名为get_name_length的函数,这个函数接收一个Person对象作为参数,返回其name属性的长度,表示按照名字长度进行排序。
总之,sorted函数提供了非常灵活的排序功能,可以满足各种排序需求,是Python编程中不可或缺的一个函数。
