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

Python中的sorted()函数详细介绍

发布时间:2023-10-06 08:20:51

sorted()函数是Python中内置的一个函数,用于对可迭代对象进行排序操作。sorted()函数会返回一个新的列表,其中包含了对原列表中元素的排序结果。

sorted()函数的基本使用格式如下:

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

参数说明:

- iterable: 表示要进行排序操作的可迭代对象,例如列表、元组、字符串等。

- key: 表示可选参数,用于指定一个函数,该函数将被用于每个元素进行排序操作。默认值为None,表示按照元素的原始值进行排序。

- reverse: 表示可选参数,用于指定排序结果的顺序。如果设置为True,表示降序排列;如果设置为False,表示升序排列。默认值为False。

sorted()函数的排序规则是基于元素的类型和大小进行的,默认情况下是按照从小到大的顺序进行排序。当我们传递key参数时,可以利用该参数指定一个函数,该函数将会用于每个元素的排序操作。

举个例子,假设我们有一个包含数字的列表,我们希望按照元素的绝对值进行排序。我们可以这样使用sorted()函数:

numbers = [5, -2, 10, -7, 3]

sorted_numbers = sorted(numbers, key=abs)

print(sorted_numbers)

# 输出: [-2, 3, 5, -7, 10]

在上述例子中,我们传递了key=abs,表示按照每个元素的绝对值进行排序。sorted()函数会调用abs()函数对每个元素进行排序操作,并返回一个新的包含排序结果的列表。

除了普通的数字排序,sorted()函数也适用于其他数据类型的排序。例如,我们可以按照字符串的长度进行排序:

words = ["banana", "apple", "cherry", "pear"]

sorted_words = sorted(words, key=len)

print(sorted_words)

# 输出: ['pear', 'apple', 'banana', 'cherry']

在上面的例子中,我们传递了key=len,表示按照每个字符串的长度进行排序。sorted()函数会调用len()函数对每个元素进行排序,并返回一个按照字符串长度排序的新列表。

此外,sorted()函数还可以根据元素的特定属性进行排序。例如,假设我们有一个包含学生对象的列表,每个学生对象都有一个分数属性。我们可以按照学生的分数进行排序:

class Student:

    def __init__(self, name, score):

        self.name = name

        self.score = score

    def __repr__(self):

        return f"Student(name='{self.name}', score={self.score})"

students = [Student("Alice", 88), Student("Bob", 73), Student("Charlie", 92)]

sorted_students = sorted(students, key=lambda student: student.score)

print(sorted_students)

# 输出: [Student(name='Bob', score=73), Student(name='Alice', score=88), Student(name='Charlie', score=92)]

在上述例子中,我们定义了一个Student类,每个学生对象都有一个分数属性。然后我们创建了一个包含学生对象的列表,并使用sorted()函数按照学生的分数进行排序。我们使用了lambda函数,该函数根据学生对象的score属性进行排序。

最后要注意的是,sorted()函数不会改变原列表,而是返回一个新的排序后的列表。如果我们想要直接对原列表进行排序,可以使用列表的sort()方法。

综上所述,sorted()函数是Python中用于排序可迭代对象的常用函数。通过对可以排序对象使用sorted()函数,我们可以轻松地按照特定需求对元素进行排序。