今天在写判断回文的时候遇到的逆转问题,一开始想到的是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']