举例说明Python中的 sorted()函数

1,266 阅读3分钟

Python sorted() Function

一个强大的Python内置函数是sorted()函数,它非常适合处理数据序列的工作。这个函数接收一个序列作为必须的输入,也可以接收一个可选的第二个关键字参数,名为reverse。反向 "参数可以被设置为 "真 "或 "假"。如果在函数调用中没有指定,'reverse'默认设置为False,意味着在排序操作中使用升序。如果你要找的是降序,那么就把反向设置为True。sorted()函数从给定序列中的项目返回一个新的排序列表。它并不修改给定的序列本身,这是需要理解的一个关键点,因为在 Python 中还有其他的排序方法,可以对数据进行原地排序。我们可以在本教程中看一下Python sorted()函数的几个例子。


按字母顺序对字符串进行升序排序

我们可以看的第一个排序例子是一个字符串的列表。所以让我们用一些著名吉他手的名字来填充一个列表。

python list of strings unsorted

现在让我们调用sorted()函数并传入'guitarists'变量。我们将该函数调用的结果存储在一个名为'guitarists_sorted_a'的新变量中。这个新变量现在保存着原始'guitarists'变量的升序字母版本。

python sorted ascending alphabetical

sorted()函数的一个关键点是,它不会修改原始的可迭代变量。为了获得迭代器的排序版本,你可以将调用 sorted() 的返回值存储在一个新的变量中,就像我们上面看到的那样。

sorted does not modify list


按字母顺序降序排序字符串

sorted()函数有一个可选的第二个参数,名为'reverse',你可以传递给它。我们可以使用值为True的'reverse'关键字,将我们的吉他手列表按字母顺序降序排序。

sorted descending alphabetical

再一次,原来的列表没有被修改。

list not modified


在一个元组中对数字进行排序

现在,让我们对一些数字使用 sorted() 函数。我们将首先添加一个'numbers'变量,并存储一些随机整数值的元组。

integers in a tuple

现在我们可以调用 sorted() 函数,并传入'numbers'变量。这个函数调用的结果被存储在一个名为'numbers_sorted_a'的新变量中。输出显示,新变量现在有从最低值到最高值排序的整数。

sorted numbers ascending

就像在我们的字符串例子中一样,原始的迭代器没有被修改。'numbers'变量仍然和原来一样。

tuple not modified

我们现在的目标是将数字元组按降序排序。我们可以使用我们方便的'reverse'参数设置为True来完成这个任务。

sorted numbers descending


在一个列表中对浮点进行排序

在sorted()函数的这个例子中,我们有一个浮点数字的列表。

floating point numbers list

现在我们可以通过调用sorted()函数并传入'floats'变量来得到这个列表的排序版本。结果是一个按升序排序的浮点数列表。

sorted floating point ascending

我们还记得如何在sorted()中使用'reverse',所以让我们也在这个浮点数列表中使用它。

sorted descending floating point list


使用sorted()与一个键

还有第三个参数可以与 sorted() 一起使用,那就是'key'参数。它是一个函数,作为排序比较的关键。在下一个例子中,我们从一个图元的列表开始。每个元组有两个值。当我们对这个数据结构使用 sorted() 时,它是按元组中的第一个值排序的。

sorted list of tuples

如果我们想按照第二个值而不是第一个值对图元组列表进行排序呢?我们可以使用 key 函数来实现这一点。

sorted key lambda function


Python sorted() 函数总结

Python sorted() 函数从一个迭代器中包含的项目中返回一个排序的列表。得到的排序默认是升序的,除非你提供'reverse=True'参数,在这种情况下,排序是降序的。

sorted() 函数的语法如下:

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