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

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参数控制排序顺序。