Python函数sorted()如何实现列表排序
发布时间:2023-10-13 10:57:04
Python函数sorted()用于对列表进行排序,它基于Timsort算法,采用了合并排序和插入排序的特性,具有高效性和稳定性。
使用sorted()函数对列表进行排序非常简单,只需要将列表作为参数传递给sorted()函数即可,例如:
my_list = [4, 2, 1, 3] sorted_list = sorted(my_list) print(sorted_list)
输出结果为:[1, 2, 3, 4]
sorted()函数会返回一个新的已排序的列表,不会改变原始列表的顺序。
sorted()函数的排序规则有三种:
1. 对数字进行排序时,按照从小到大的顺序排序:
my_list = [4, 2, 1, 3] sorted_list = sorted(my_list) print(sorted_list)
输出结果为:[1, 2, 3, 4]
2. 对字符串进行排序时,按照字母的ASCII码进行排序,即按照字母顺序排序:
my_list = ['b', 'd', 'a', 'c'] sorted_list = sorted(my_list) print(sorted_list)
输出结果为:['a', 'b', 'c', 'd']
3. 对自定义对象进行排序时,可以使用key参数指定一个函数来获取对象的排序值,再根据排序值进行排序:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_age(self):
return self.age
people = [Person('Alice', 25), Person('Bob', 20), Person('Charlie', 30)]
sorted_people = sorted(people, key=lambda x: x.get_age())
for person in sorted_people:
print(person.name, person.age)
输出结果为:
Bob 20 Alice 25 Charlie 30
在上面的示例中,我们定义了一个Person类,其中get_age()方法返回对象的年龄。在调用sorted()函数时,使用了lambda表达式来指定获取对象排序值的方法,即按照年龄进行排序。
此外,sorted()函数还提供了reverse参数用于控制排序顺序,reverse=True表示按照从大到小的顺序进行排序:
my_list = [4, 2, 1, 3] sorted_list = sorted(my_list, reverse=True) print(sorted_list)
输出结果为:[4, 3, 2, 1]
综上所述,Python函数sorted()可以非常方便地对列表进行排序,不仅适用于数字和字符串,还可以通过key参数对自定义对象进行排序,同时还可以通过reverse参数控制排序顺序。
