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

在Python中使用sorted函数对列表进行排序

发布时间:2023-06-16 02:43:08

Python中的sorted函数是一个非常强大的函数,它可以对列表、元组、字典等可迭代对象进行排序。本文主要介绍如何使用sorted函数对列表进行排序。

Python中的sorted函数有两个非常重要的参数:key和reverse。其中,key参数可以接受一个函数作为参数,这个函数将会作用于每个元素,并返回一个用于排序的关键字。reverse参数则是用来控制排序的方式,如果设置为True,则表示按照降序排序,否则按照升序排序。

下面是一个简单的例子,展示如何使用sorted函数对一个列表进行升序排序:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
new_lst = sorted(lst)
print(new_lst)

运行以上代码,输出结果如下:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 7, 8, 9, 9, 9]

以上代码中,我们首先定义了一个包含15个元素的列表lst,然后使用sorted函数对lst进行排序,将排序后的列表保存在new_lst中,并打印输出。

我们可以发现,new_lst中的元素已经按照升序排列,与原列表lst中的元素顺序不同。

除了默认的升序排列之外,我们还可以使用reverse参数来实现降序排列,示例如下:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
new_lst = sorted(lst, reverse=True)
print(new_lst)

运行以上代码,输出结果如下:

[9, 9, 9, 8, 7, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

可以发现,new_lst中的元素已经按照降序排列。与升序排列不同的是,我们在使用sorted函数时,需要将reverse参数设置为True。

上面的示例中,我们使用了sorted函数的默认排序方式,即按照元素大小进行排序。如果我们需要使用自定义的规则来进行排序,则可以使用key参数。

例如,如果我们需要按照每个元素的绝对值大小进行排序,可以使用以下代码:

lst = [3, -1, 4, -1, 5, 9, -2, 6, 5, -3, 5, -8, 9, -7, 9]
new_lst = sorted(lst, key=abs)
print(new_lst)

这里我们定义了一个包含15个元素的列表lst,并使用abs函数作为key参数来对lst进行排序。abs函数用来计算每个元素的绝对值,并返回作为排序的关键字。

运行以上代码,输出结果如下:

[-1, -1, 2, 3, -3, 4, 5, 5, 5, 6, -7, 8, 9, 9, 9]

可以发现,new_lst中的元素已经按照绝对值大小进行排序了。

除了使用内置函数作为key参数之外,我们还可以自己定义一个函数作为key参数,用来对元素进行排序。例如,如果我们需要按照每个元素的倒数大小来进行排序,可以使用以下代码:

def reciprocal(x):
    return 1 / x

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
new_lst = sorted(lst, key=reciprocal)
print(new_lst)

这里我们定义了一个reciprocal函数,用来计算每个元素的倒数,并返回作为排序的关键字。然后使用reciprocal函数作为key参数来对lst进行排序。

运行以上代码,输出结果如下:

[9, 9, 9, 1, 1, 4, 5, 5, 5, 6, 2, 3, 3, 7, 8]

可以发现,new_lst中的元素已经按照倒数大小进行排序了。

除了使用key参数来控制排序规则之外,我们还可以对元素进行联合排序。例如,如果我们需要先按照元素的奇偶性进行排序,再按照元素大小进行排序,可以使用以下代码:

def odd_first(x):
    if x % 2 == 0:
        return (1, x)
    else:
        return (0, x)

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
new_lst = sorted(lst, key=odd_first)
print(new_lst)

这里我们定义了一个odd_first函数,用来判断每个元素的奇偶性,并返回一个元组(odd, x),其中odd表示元素是否为奇数,x为元素的值。然后使用odd_first函数作为key参数,对lst进行排序。

运行以上代码,输出结果如下:

[1, 1, 3, 5, 5, 5, 7, 9, 9, 2, 4, 6, 8, 9, 3]

可以发现,new_lst中的元素先按照奇偶性进行了排序,然后在每个奇偶性内部再按照元素的大小进行排序了。

综上,我们可以看到,在Python中使用sorted函数对列表进行排序非常方便,只需要使用key和reverse参数来控制排序规则即可。此外,我们还可以使用自定义的函数作为key参数来实现自定义的排序规则,使得sorted函数可以应对更多的排序需求。