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

Python中的排序函数和用法

发布时间:2023-06-29 03:48:39

Python中有很多内置的排序函数和方法,可以方便地对列表、元组和其他可迭代对象进行排序。下面将介绍几种常用的排序函数和用法:

1. sorted()函数

sorted()函数是Python内置的排序函数,它返回一个新的列表,按照指定的排序顺序对可迭代对象进行排序。它的语法如下:

sorted(iterable, key=key, reverse=reverse)

- iterable:需要排序的可迭代对象,如列表、元组等。

- key:可选参数,用于指定一个函数来从每个元素中提取比较键。默认为None,表示按元素本身进行比较。

- reverse:可选参数,用于指定排序顺序,True表示降序排序,False表示升序排序。默认为False。

示例:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

sorted_numbers = sorted(numbers)  # 默认升序排序

print(sorted_numbers)  # 输出:[1, 1, 2, 3, 4, 5, 5, 6, 9]

2. sort()方法

sort()方法是列表对象的方法,用于对原地进行排序,即直接修改原列表,而不返回新的列表。它的语法如下:

list.sort(key=key, reverse=reverse)

- key:可选参数,用于指定一个函数来从每个元素中提取比较键。默认为None,表示按元素本身进行比较。

- reverse:可选参数,用于指定排序顺序,True表示降序排序,False表示升序排序。默认为False。

示例:

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

numbers.sort()  # 默认升序排序

print(numbers)  # 输出:[1, 1, 2, 3, 4, 5, 5, 6, 9]

3. 自定义排序函数

在某些情况下,我们需要根据自定义的规则进行排序,此时可以使用key参数来指定一个函数来从每个元素中提取比较键。该函数应返回一个用于比较排序的值。以下是一个根据字符串长度进行排序的示例:

names = ['Tom', 'Jerry', 'Mickey', 'Donald']

sorted_names = sorted(names, key=lambda x: len(x))

print(sorted_names)  # 输出:['Tom', 'Jerry', 'Mickey', 'Donald']

在这个示例中,用lambda函数作为key参数,提取每个字符串的长度进行比较。

4. 复杂对象排序

在对复杂对象进行排序时,可以使用key参数结合对象的属性来指定比较键。例如,对一个学生对象列表按照年龄进行排序:

class Student:

    def __init__(self, name, age):

        self.name = name

        self.age = age

students = [

    Student('Tom', 18),

    Student('Jerry', 20),

    Student('Mickey', 16),

    Student('Donald', 19)

]

sorted_students = sorted(students, key=lambda x: x.age)

for student in sorted_students:

    print(student.name, student.age)

输出:

Mickey 16

Tom 18

Donald 19

Jerry 20

在这个示例中,用lambda函数作为key参数,提取每个学生对象的age属性进行比较。

以上是Python中一些常用的排序函数和用法,了解它们可以帮助我们在日常开发中更方便地进行排序操作。