反向切片Python

时间:2016-02-07 00:32:12

标签: python slice substring

在Python中我知道你可以将序列切片为seq [from:to + 1:step]。但是如果你反向切片,使用-1的步长,为什么它不显示from元素?它将一个元素从我期望的方向向右移动。

x="012345"
x[4:2:-1] 

按照我的预期打印43,而不是4321。因此,如果step为-1,则打印seq [from:to-1:step]。似乎不一致。

3 个答案:

答案 0 :(得分:0)

如果要切片到4321,则应该x[-2:0:-1]

这意味着从-2开始(-1是最后一个元素)并转到0(没有任何东西是第一个元素),步骤为-1。

答案 1 :(得分:0)

按预期工作。
如果您需要结果,

>>> x[4:0:-1]
'4321'

这意味着,从第5个元素开始切片,直到第1个元素(但不包括它)。仅当您将step size指定为否定时,此类切片才有效。

一般来说,请遵循olofom的回答。

答案 2 :(得分:0)

切片从第一个数字(包括)转到第二个数字(不包括),步骤为第三个数字。在您的情况下,第一个号码访问" 4"和第二个号码访问" 2"。步长为-1,它将从第一个数字(" 4")的位置开始,然后获得下一个字符(或步长为-1,实际上是前一个字符) " 3"),但会停在那里,因为第二个索引(2)是独占的。从#34; 4"到" 0",您可以x[4:0:-1]或更方便x[:5]