python中的sort()、sorted()、以及reversed()

今天在写判断回文的时候遇到的逆转问题,一开始想到的是sort(),后来想到sort()函数的作用是按大小排序,而不是对顺序进行颠倒,所以用到了reversed(),写完后顺便看了下官方文档再来总结下这几个的用法。

sort(*,key=None,reverse=None):

sort()为对列表进行原地排序,没有返回值

sort接受两个参数,key参数可以让sort按照该参数标准进行排序,如key=len,按照长度进行排序;

a = ['java','c','python']
>>> a.sort(key=len)
>>> a
['c', 'java', 'python']

另一个参数是正序还是逆序,即大到小还是从小到大,当reverse为true时,为逆序,即从大到小,当为false时,为从小到大,默认为false
>>> a.sort(key=len,reverse=True)
>>> a
['python', 'java', 'c']


sorted(iterable[,key][,reverse]):

sorted()返回一个新的排序过的可迭代序列(此处为列表),key参数跟reverse参数同sort(),

>>> sorted(a,key=len,reverse=True)
['python', 'java', 'c']
>>> b = sorted(a,key=len,reverse=True)
>>> a == b
True
>>> a is b
False

可见,b是新建的对象


reverse():

reverse()在原列表的基础上进行颠倒操作,不会产生另外的列表,所以没有返回值

reversed(seq)返回一个新的可迭代对象,

>>> a
['python', 'java', 'c']
>>> a.reverse()
>>> a
['c', 'java', 'python']
>>> reversed(a)
<list_reverseiterator object at 0x0000000002B3BB70>

如果想查看返回的内容,可以用for遍历

>>> for each in reversed(a):
print(each)



python
java
c

对于倒序反转,其实还有一种方法就是切片,

b = a[开始位置 : 结束位置 : 步长]

此处进行了一个复制的操作,当步长为-1时,即复制一个逆转后的序列。

>>> a
['c', 'java', 'python']
>>> b = a[::-1]
>>> b
['python', 'java', 'c']



猜你喜欢

转载自blog.csdn.net/Noob_coder_JZ/article/details/80011771