Python中列表排序操作,主要有两种方式,一种是通过内置函数sorted,另一种是通过内置类list的sort方法。
内置函数sorted()
Python在内置模块builtins中提供了可供排序使用的内置函数sorted,函数语法如下:
def sorted(*args, **kwargs):
说明:
sorted函数是一个稳定排序, 底层用的是归并排序算法。默认是一个升序排序。
参数:
- 第一个参数是可迭代的数据对象,列表、元组或字符串。
- 参数key,用于指定一个函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
- 参数reverse,是一个bool值,如果设置为True,列表元素将被反向排列。默认为False。
返回值:
函数返回排序完之后的新的列表。
示例
>>> sorted([1, 8, 7, 1, 5, 7, 4, 7, 0])
[0, 1, 1, 4, 5, 7, 7, 7, 8]
# 字符转化为小写之后再比较,str.lower为内置类str的lower方法
>>> sorted('Jeff Dean', key=str.lower)
[' ', 'a', 'D', 'e', 'e', 'f', 'f', 'J', 'n']
# 升序之后,再反转
>>> sorted(('b', 'e', 'l', 'g', 'i', 'u', 'm'), reverse=True)
['u', 'm', 'l', 'i', 'g', 'e', 'b']
内置类list的sort()方法
Python在内置模块builtins内置类list中提供了排序使用的sort方法,函数语法如下:
def sort(self, key=None, reverse=False):
说明:
和内置函数sorted一样,也是稳定排序,底层用的归并排序实现,参数的设计也是一样的,最大的区别是sorted函数可以理解为泛化的,因为可以排序除了列表之外的其他可迭代数据对象(如字符串、元组等),而list的sort方法只是对列表的排序。
参数:
- 参数key,用于指定一个函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
- 参数reverse,是一个bool值,如果设置为True,列表元素将被反向排列。默认为False。
返回值:
返回None,原列表变为排序之后的状态。
示例
lst1 = [1, 8, 6, 1, 8, 4, 8, 8, 8, 9]
lst1.sort()
print(lst1)
lst2 = ['p', 'o', 'r', 't', 'u', 'g', 'a', 'l']
lst2.sort(reverse=True)
print(lst2)
lst3 = ['L', 'a', 'r', 'r', 'y', ' ', 'P', 'a', 'g', 'e']
lst3.sort(key=str.upper)
print(lst3)
输出结果为:
[1, 1, 4, 6, 8, 8, 8, 8, 8, 9]
['u', 't', 'r', 'p', 'o', 'l', 'g', 'a']
[' ', 'a', 'a', 'e', 'g', 'L', 'P', 'r', 'r', 'y']