Python中sort、sorted、reverse与reversed函数的区别详解

Leo
Leo
发布时间:2026-10-13 | 3人浏览过
原创

本文详细解析Python中sort、sorted、reverse和reversed四个函数的核心区别。重点说明sort和reverse为原地修改方法,仅适用于列表;而sorted和reversed为内置函数,支持多种可迭代对象并返回新结果。文章还深入讲解了sorted函数的cmp、key及reverse参数的具体用法与示例,帮助开发者根据实际需求选择正确的排序与反转方式。

sort与reverse:原地修改方法

sort()是列表等可变对象的方法,它不接受额外参数,也不返回任何值。调用sort()会直接修改原对象,因此无需返回值。

sort()是可变对象特有的方法或属性。对于元组、字符串等不可变对象,由于它们不支持原地修改,调用该方法会抛出异常。

具体代码示例如下:


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

sorted与reversed:内置函数用法

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

具体代码示例如下:


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

>>> sorted(mystring)
>>>[1, 2, 3, 4, 5]

>>>mystring
>>>"54321"

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

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

sorted函数参数详解

补充知识:Python sorted()函数中cmp、key和reverse参数的详细解析。

Python官方帮助文档对sorted方法的定义如下:

sorted(iterable[,cmp,[,key[,reverse=True]]])

功能:返回一个经过排序后的列表。

第一个参数iterable表示可迭代对象,返回值是对该对象元素排序后的列表(list)。

该函数包含三个可选参数:cmp、key和reverse。

1) cmp用于指定自定义比较函数,接收两个参数(来自iterable的元素)。若第一个参数小于第二个,返回负数;相等返回零;大于返回正数。默认值为None。

2) key用于指定一个单参数函数,从每个元素中提取用于比较的关键字。默认值为None。

3) reverse为布尔值。若设为True,列表元素将按倒序排列。

key参数的值应为一个函数,接收一个参数并返回用于比较的关键字。对于复杂对象,通常使用对象的切片作为关键字进行比较。

例如:


students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) #按年龄排序
# [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

以上关于Python中sort、sorted、reverse和reversed函数区别的内容到此结束,希望能为读者提供参考,并欢迎支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表