Python中的sorted()函数 - 用于对列表进行排序
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()函数是用于对列表进行排序的强大工具之一。通过简单地使用升序或降序排序,或使用自定义键函数排序,您可以轻松地完成这项任务。
