Python列表排序详解:reverse、sort与sorted的区别与用法

Theo
Theo
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍Python中列表排序的三种主要方式:reverse()用于原地反转,sort()用于原地正序排序,sorted()作为内置函数返回新列表。文章对比了三者的参数、返回值及对原列表的影响,并通过代码示例展示如何处理可变与不可变对象的排序需求,帮助开发者根据场景选择合适方法。

Python语言中,列表排序主要涉及三种方法:

reverse():用于反转或倒序排列列表元素。

sort():用于对列表进行正向排序。

sorted():用于获取排序后的新列表,而不修改原列表。

在更复杂的排序场景中,后两种方法(sort和sorted)支持通过参数指定排序条件。

reverse()方法详解

该方法用于将列表中的元素顺序反转。例如:


>>> x = [1,5,2,3,4]
>>> x.reverse()
>>> x
[4, 3, 2, 5, 1]

reverse()执行的是列表反转操作,即将原列表中元素从左至右的顺序重新存放,但不会改变元素本身的内容或进行数值/字符大小的整理。若需对列表元素按大小或规则进行整理,应使用sort()正序排序方法。

sort()排序方法详解

此方法对列表内容进行正向排序,排序后的结果直接覆盖原列表(对象ID不变),即sort()是直接修改原列表的方法。


>>> a = [5,7,6,3,4,1,2]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7]

许多Python初学者在使用sort()时容易混淆。有时需要保留排序后的结果,同时保留未排序的原始列表,常见的错误操作如下:


>>> a = [5,7,6,3,4,1,2]
>>> b = a.sort()
>>> print b
None

此时变量b的值为None(空值)。若希望既得到排序后的列表,又保留原列表,应使用sorted()方法。

sorted()方法详解

sorted()方法可以在保留原列表的同时,返回一个已排序的新列表。操作示例如下:


>>> a = [5,7,6,3,4,1,2]
>>> b = sorted(a)
>>> a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]

sorted()可应用于任何数据类型的序列,返回值始终为列表形式:


>>> sorted('jb51.net')
['.', '1', '5', 'b', 'e', 'j', 'n', 't']

三者核心区别

sort()是可变对象(如列表、字典)的方法,无额外参数时默认按默认规则排序,无返回值,且会直接改变可变对象的状态。因此,sort()无需也不应接收返回值。sort()是可变对象特有的方法,元组、字符串等不可变对象不具备此方法,调用会引发异常。


>>> a=[5,4,3,2,1]
>>> a.sort()
>>> 
>>> a
[1, 2, 3, 4, 5]

sorted()是Python的内置函数,并非可变对象特有。它接收一个参数(可以是列表、字典、元组、字符串等),无论输入何种类型,均返回一个以列表为容器的结果;若输入为字典,则返回键的列表。


>>> mystring="54321"
>>> mytuple=(5,4,3,2,1)
>>> mylist=[5,4,3,2,1]
>>> sorted(mystring)
['1', '2', '3', '4', '5']
>>> sorted(mytuple)
[1, 2, 3, 4, 5]
>>> sorted(mylist)
[1, 2, 3, 4, 5]

reverse()与sort()的使用方式类似,均作用于原对象;而reversed()与sorted()的使用方式类似,均返回迭代器或新序列,不修改原对象。


>>> mylist=[5,4,3,2,1]
>>> mylist.reverse()
>>> mylist
[1, 2, 3, 4, 5]
>>> mylist=[5,4,3,2,1]
>>> for i in reversed(mylist):
...  print i,
... 
1 2 3 4 5

此外,通过序列切片操作也可实现“逆转”效果。


>>> mystring="54321"
>>> mytuple=(5,4,3,2,1)
>>> mylist=[5,4,3,2,1]
>>> mystring[::-1]
'12345'
>>> mytuple[::-1]
(1, 2, 3, 4, 5)
>>> mylist[::-1]
[1, 2, 3, 4, 5]

关于Python列表排序方法reverse、sort、sorted的讲解至此结束,更多相关知识请参阅下方链接。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。