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

Python中的sorted()函数 - 用于对列表进行排序

发布时间:2023-06-06 11:36:03

Python是一种广泛使用的编程语言,因为它具有简单易学、灵活、强大等优点,它有很多的内置函数可以帮助我们更好的完成编程任务。其中一个非常有用的函数是sorted()函数,它可以对列表进行排序。本文将详细介绍sorted()函数及其使用方法。

一、sorted()函数的基本定义

sorted()是内置函数,它可以对给定的序列进行排序操作。sorted()函数可以作用于任何可迭代对象,例如列表、元组、字典、集合等。

一般情况下,sorted()函数按升序排列列表中的元素。您可以使用reverse=True参数来进行降序排序。

二、sorted()函数的基本用法

下面我们将介绍sorted()函数的基本用法。为了方便,我们将sorted()函数运用到一个列表中。

首先,我们定义一个包含整数的列表:

num_list = [6, 2, 9, 3, 7]

然后,我们调用sorted()函数:

sorted_list = sorted(num_list)

这将返回一个新的已排序列表:

[2, 3, 6, 7, 9]

按照升序排列了num_list 中的元素。

在上面的例子中,我们没有给sorted()函数传递任何参数。这是因为默认情况下,sorted()使用升序排序。

然而,如果您想要降序排序,则可以按照以下方式调用sorted()函数:

sorted_list = sorted(num_list, reverse=True)

这将返回一个新的已排序列表:

[9, 7, 6, 3, 2]

按降序排列了num_list 中的元素。同样的,如果您想要按照任何其他规则进行排序,则需要传递一个key参数。下面我们将介绍如何使用key参数。

三、使用key参数进行排序

在有些情况下,您可能需要按照除升序和降序之外的其他规则对列表进行排序。在这种情况下,您可以使用key参数。

例如,假设我们有一个列表,其中包含三个学生的名称和他们的分数。

student_list = [("Jack", 80), ("Lucy", 94), ("Tom", 78)]

现在,我们想按照学生的分数对列表进行排序。要做到这一点,我们可以使用key参数并编写一个函数来告诉sorted()函数如何进行排序。

下面是这个函数:

def sort_by_score(student):

    return student[1]

现在,我们可以调用sorted()函数,并将我们的新功能传递给key参数:

sorted_list = sorted(student_list, key=sort_by_score, reverse=True)

这将按分数降序对列表进行排序。sorted_list将变成:

[('Lucy', 94), ('Jack', 80), ('Tom', 78)]

如果我们要按照名称的长度排序,可以编写以下的函数:

def sort_by_name_length(student):

    return len(student[0])

我们将这个函数传递给key参数:

sorted_list = sorted(student_list, key=sort_by_name_length)

这将按照名称长度的升序进行排序。sorted_list将变成:

[('Tom', 78), ('Jack', 80), ('Lucy', 94)]

四、sorted()函数与sort()方法的区别

除了使用sorted()函数来排序列表之外,我们还可以使用列表的sort()方法。sorted()函数和sort()方法的区别在于,sorted()函数返回一个新列表,而原始列表不受影响,而sort()方法将原始列表排序,而不返回新的副本。

例如,如果我们在上面的示例中使用sort()方法,代码如下:

student_list.sort(key=sort_by_score, reverse=True)

现在,学生列表将被排序,并且不需要在代码中使用新变量。但要注意,原始列表将被排序,因此您需要确定这是您想要的行为。

五、结论

排序在许多编程中是一个常见的任务,因此sorted()函数和sort()方法非常有用。sorted()函数特别适用于需要将列表排序并返回新列表的情况。而sort()方法则更适合仅想在列表内对其进行排序的情况。

Python内置函数程序员的工具箱中有很多强大的工具。sorted()函数是用于对列表进行排序的强大工具之一。通过简单地使用升序或降序排序,或使用自定义键函数排序,您可以轻松地完成这项任务。