Python中sort、sorted、reverse与reversed函数的区别详解
本文详细解析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函数区别的内容到此结束,希望能为读者提供参考,并欢迎支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













