📜  排列 python (1)

📅  最后修改于: 2023-12-03 15:25:55.466000             🧑  作者: Mango

排列 Python

Python中有不同的方法可以对列表进行排序,其中包括内置的函数和方法以及标准库中的模块。

内置排序函数

Python内置了两个排序函数,分别为sorted()list.sort()。这两个函数都可以对一个列表进行排序,但是它们的实现方式是不同的。

sorted()

sorted()函数会返回一个新的已排序的列表,原列表的顺序不会受到影响。sorted()函数可以接收一个关键字参数key,用于指定排序的规则。

>>> my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
>>> sorted_list = sorted(my_list)
>>> print(sorted_list)
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

>>> my_list = ['apple', 'banana', 'cherry', 'date']
>>> sorted_list = sorted(my_list, key=len)
>>> print(sorted_list)
['date', 'apple', 'banana', 'cherry']
list.sort()

list.sort()方法会修改原列表,返回值为Nonelist.sort()方法同样可以接收一个关键字参数key

>>> my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
>>> my_list.sort()
>>> print(my_list)
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

>>> my_list = ['apple', 'banana', 'cherry', 'date']
>>> my_list.sort(key=len)
>>> print(my_list)
['date', 'apple', 'banana', 'cherry']
标准库中的排序模块

Python还提供了一个sorted()函数和list.sort()方法都不支持的模块——sorted()模块,它提供了更多定制排序功能。

operator模块

operator模块提供了多个函数,可用于比较列表中的两个元素。

>>> from operator import lt, gt
>>> lt(1, 2)
True
>>> gt(1, 2)
False
functools模块

functools模块提供了一个装饰器cmp_to_key(),来将一个比较函数转换为一个key函数。

>>> from functools import cmp_to_key
>>> my_list = ['apple', 'banana', 'cherry', 'date']
>>> sorted_list = sorted(my_list, key=cmp_to_key(lambda x, y: len(x) - len(y)))
>>> print(sorted_list)
['date', 'apple', 'banana', 'cherry']
heapq模块

heapq模块提供了一些用于堆排序的函数。

>>> import heapq
>>> my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
>>> sorted_list = list(heapq.merge([3, 1, 4], [1, 5, 9], [2, 6, 5, 3, 5]))
>>> print(sorted_list)
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
总结

Python中提供了多种排序方式,包括内置的函数和方法,以及标准库中的模块。不同的排序函数和方法提供了不同的方式来控制排序的规则,并且有时也需要根据不同的需求来选择相应的排序方式。