Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python 列表的排序

Python 列表定义及增加、删除、修改和查找元素等操作 Python 列表定义及增加、删除、修改和查找元素等操作


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']