理解负切片步长值

时间:2013-09-27 06:58:32

标签: python slice

我在理解当切片时将负值放入步骤时会发生什么时遇到问题。

我知道[::-1]会反转一个字符串。我想知道它为启动和停止分配的值是什么值。

我认为结束字符串会是0。并试过

f="foobar"

f[0:5:-1]--->它没有给我输出。为什么呢?

我读过开始不应该通过停止。在负步长值的情况下也是如此吗?

任何人都可以帮助我清除疑虑。

2 个答案:

答案 0 :(得分:3)

f[0:5:-1]不生成任何输出的原因是因为你从0开始,并试图向后计数到5.这是不可能的,所以Python返回一个空字符串。

相反,您需要f[5:0:-1],它返回字符串"raboo"

请注意,该字符串不包含f字符。为此,您需要f[5::-1],它返回字符串"raboof"


您还问:

  

我已经阅读开始不应该通过停止。在负步长值的情况下也是如此吗?

不,这不是真的。通常,start值不应传递stop值,但仅限于步骤为正值。如果步骤为负,则反之亦然。必要时,start必须高于stop值。

答案 1 :(得分:0)

你可以这样想:

f[0:5]0是起始位置,5-1是结束位置。

f[0:5:-1]5是起始位置,0+1是结束位置。

在切片中,起始位置必须低于结束位置。 如果不是这种情况,则结果为空字符串。因此f[0:5:-1]返回一个空字符串。