为什么我们可以这样编写来反转字符串:str = str [:: - 1]?

时间:2013-10-21 15:26:43

标签: python

有人告诉我你可以反转这样的字符串:

a='123456'
a = a[::-1]
print a

我只是不知道它是如何运作的。

3 个答案:

答案 0 :(得分:4)

利用了Python的slice notation。基本上,它返回一个新的字符串,该字符串通过向后步进原始字符串而创建。请参阅下面的演示:

>>> mystr = "abcde"    
>>> mystr[::-1]
'edcba'
>>> for i in mystr[::-1]:
...     print i
...
e
d
c
b
a
>>>

切片表示法的格式为[start:stop:step]

答案 1 :(得分:2)

第三个参数是步长。尝试一些不同的步长来实现这个想法

>>> a = '123456'
>>> a[::2]
'135'
>>> a[::3]
'14'
>>> a[::-3]
'63'
>>> a[::-2]
'642'
>>> a[::-1]
'654321'

由于启动和停止是空的,Python将选择它们沿着整个字符串步进。

答案 2 :(得分:2)

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

字符串实现与列表相同的可迭代协议,因此您不是在列表中反转元素,而是在字符串中反转字符。