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

Python中的sorted()函数:按指定顺序对列表进行排序

发布时间:2023-05-20 03:14:55

Python中的sorted()函数是一种非常便捷的排序函数。它可以对一个列表进行按照指定顺序进行排序的操作。sorted()是Python内置的一个函数,可以帮助Python开发者快速地进行排序操作。

在Python中,排序操作是比较常见的,因为很多时候需要对列表、元组等容器类型进行排序操作,以便更好地处理数据。Python内置的sorted()函数,可以帮助我们完成这些操作,并且非常方便。

sorted()函数语法

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

其中,iterable代表需要排序的序列,可以是列表、元组或其它类型的可迭代对象。参数key是一个排序的关键字,一般用来指定排序时要比较的字段,比如我们可以按照字典序排序(即按照首字母的顺序排列),或者按照元素中某个属性的大小排序。reverse参数指定是否进行反向排序,默认为False。

示例:

>>> lst = [3, 1, 4, 1, 5, 9, 2, 6]

>>> sorted(lst)

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

>>> sorted(lst, reverse=True)

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

1) 默认排序

在最简单的情况下,sorted()函数可以直接对列表进行排序,它会使用默认的排序方式,即升序排序。

例如:

lst = [3, 1, 4, 1, 5, 9, 2, 6]

lst = sorted(lst)

print(lst)

输出结果是:[1, 1, 2, 3, 4, 5, 6, 9]

2) 按关键字排序

除了按照默认的升序排列外,sorted()函数还可以按照指定的关键字来排序,比如字典序、元素某个属性的大小等等。

例如:

lst = [('a', 2, 1), ('c', 1, 3), ('b', 3, 2)]

lst = sorted(lst, key=lambda x: x[0])

print(lst)

输出结果是:[('a', 2, 1), ('b', 3, 2), ('c', 1, 3)]

在这个例子中,我们将一个列表按照其元素的 个元素排序,即按照字母的顺序排序。

3) 按多个关键字排序

sorted()函数还支持按多个关键字进行排序,只需要将多个关键字写成一个元组即可。在排序时,sorted()函数会首先按照元组的 个关键字排序,如果 个关键字相同,则按照第二个关键字排序,依次类推。

例如:

lst = [('a', 2, 1), ('c', 1, 3), ('b', 3, 2)]

lst = sorted(lst, key=lambda x: (x[1], x[2]))

print(lst)

输出结果是:[('c', 1, 3), ('a', 2, 1), ('b', 3, 2)]

在这个例子中,我们将一个列表按照其元素的第二个和第三个元素进行排序,即按照数字大小排序。

4) 自定义排序函数

除了使用lambda表达式外,如果需要实现更复杂的排序需求,还可以使用自定义排序函数。自定义排序函数的形式为:def func(x): return x[0]。

例如:

lst = [('a', 2, 1), ('c', 1, 3), ('b', 3, 2)]

def mySort(x):

    return x[1] + x[2] #按照元素的第二个和第三个元素之和排序

lst = sorted(lst, key=mySort)

print(lst)

输出结果是:[('c', 1, 3), ('a', 2, 1), ('b', 3, 2)]

在这个例子中,我们将一个列表按照自定义的排序函数进行排序,即按照元素的第二个和第三个元素之和排序。

总结:

sorted()函数是Python内置的一个非常方便的排序函数,它可以按照指定顺序对列表等序列进行排序操作。除了默认的升序排列外,还可以按照关键字、多个关键字以及自定义排序函数来进行排序操作。在开发过程中,使用sorted()函数可以大大提高开发效率。