有人告诉我你可以像这样反转一个字符串:
a='123456'
a = a[::-1]
print a
我只是不知道它是如何工作的。
这利用了 Python 的切片表示法。基本上,它返回一个通过向后遍历原始字符串创建的新字符串。请看下面的演示:
>>> mystr = "abcde"
>>> mystr[::-1]
'edcba'
>>> for i in mystr[::-1]:
... print i
...
e
d
c
b
a
>>>
切片符号的格式是[start:stop:step]
.
第三个参数是步长。尝试一些不同的步长来理解这个想法
>>> a = '123456'
>>> a[::2]
'135'
>>> a[::3]
'14'
>>> a[::-3]
'63'
>>> a[::-2]
'642'
>>> a[::-1]
'654321'
由于 start 和 stop 为空,Python 将选择它们来遍历整个字符串。
在 Python 中,负切片环绕,所以 -1 是最后一个元素。
[1,2,3,4][-1] = 4
在切片表示法中,前两个元素是边界,第三个元素是索引增量。默认情况下,增量为 1。
[1,2,3,4,5][1:4] == [2,3,4]
[1,2,3,4,5][1:4:2] == [2,4]
Python 还允许省略绑定索引来引用整个列表[::]
。
[1,2,3,4,5][::1] == [1,2,3,4,5]
因此,如果您的增量为负数,您可以通过从末尾向后索引来反转列表。
[1,2,3,4,5][::-1] == [5,4,3,2,1]
字符串实现了与列表相同的可迭代协议,因此您不是反转列表中的元素,而是反转字符串中的字符。