Python的sorted()函数详解
sorted()函数是Python内置的一个函数,它接受一个可迭代对象(例如列表、元组、字符串等)作为输入,并返回一个新的列表,其中包含了按照指定规则排序后的所有元素。该函数的格式如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是指需要排序的可迭代对象,如列表、元组、字符串等;key是指用于排序的键,可以是一个函数或者是一个lambda表达式;reverse是一个布尔值,如果其为True,则表示按降序排序,否则按升序排序。
下面我们将按照不同的规则,详细讲解sorted()函数的使用方法。
1.按照默认规则升序排序
如果我们想要对一个列表或者元组按照默认的规则(即升序,从小到大)进行排序,可以直接调用sorted()函数,如下所示:
>>> a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
>>> b = sorted(a)
>>> print(b)
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
2.按照指定规则排序
如果我们想要按照一定的规则进行排序,可以使用key参数。例如,如果我们想将一个字符串列表按照长度进行排序,可以使用len函数作为key参数,如下所示:
>>> a = ['apple', 'banana', 'cherry', 'date', 'fig']
>>> b = sorted(a, key=len)
>>> print(b)
['date', 'fig', 'apple', 'banana', 'cherry']
在上面的语句中,我们将len函数作为key参数传入sorted()函数中。由于len函数会返回列表中每个字符串的长度,因此该语句相当于按照字符串长度从小到大进行排序。
3.按照指定规则降序排序
如果我们想要将一个列表按照指定规则降序排序,只需要将reverse参数设置为True即可。例如,如果我们想将一个字符串列表按照长度进行降序排序,可以使用len函数作为key参数,并将reverse参数设置为True,如下所示:
>>> a = ['apple', 'banana', 'cherry', 'date', 'fig']
>>> b = sorted(a, key=len, reverse=True)
>>> print(b)
['banana', 'cherry', 'apple', 'date', 'fig']
在上面的语句中,我们将len函数作为key参数传入sorted()函数中,并将reverse参数设置为True。由于reverse参数为True,sorted()函数会将返回的列表按照指定规则降序排列。
4.使用lambda表达式作为key参数
如果我们想要按照自定义的规则进行排序,可以使用lambda表达式作为key参数。lambda表达式可以视为一种临时的、匿名的函数,可以接受任意数量的参数,并返回一个结果。例如,如果我们想将一个列表按照其中每个元素的倒数进行排序,可以使用lambda表达式作为key参数,如下所示:
>>> a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
>>> b = sorted(a, key=lambda x: 1/x)
>>> print(b)
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
在上面的语句中,我们使用lambda表达式定义了一个函数,该函数接受一个参数x,并返回1/x的值。我们将该lambda表达式作为key参数传入sorted()函数中,用于按照每个元素的倒数进行排序。
总之,sorted()函数是Python内置的一个非常有用的函数,可以帮助我们轻松地对各种数据类型进行排序,从而更方便地进行各种统计和分析工作。无论您是要按照默认规则排序,还是要按照自定义规则进行排序,都可以使用sorted()函数轻松实现。
