2013-09-27 28 views
2

我在理解会发生什么情况时出现问题,当我在切片的情况下将负值设置为步骤时。我知道[::-1]反转一个字符串。我想知道它分配什么价值开始和停止获得相反。了解负面切片步骤值

我认为这将是0结束到字符串。并试图

f="foobar"

f[0:5:-1]--->它给了我无输出。为什么?

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

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

+1

由于负的步幅从起始值开始; 0 - 1为-1,在0 - 5的范围之外。从[5 :: - 1]开始。 –

+0

@Martijn回答并没有解释很多有关负阶跃值的情况。在f [5 :: - 1]的情况下为 – shubendrak

回答

2

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

取而代之,你想要f[5:0:-1],它返回字符串"raboo"

请注意,该字符串不包含f字符。要做到这一点,你需要f[5::-1],它返回字符串"raboof"


你还问:

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

不,这是不正确的。通常,start值不应超过stop的值,但仅当该步骤为肯定时。如果步骤是否定的,则反过来是正确的。必要时,start必须高于stop的值。

+0

,它指定停止的值。它是-1 – shubendrak

+0

由于缺少停止值,因此将赋值为None。因此,当你执行'f [:]'时,这实际上是做'f [None:None]'的捷径。无可否认,这乍一看有点令人困惑,但确实有点意义。如果停止值是'-1',那么这意味着你要切片但不包括最后一个字符。你需要一些价值来表明“切到底”,在这种情况下没有数字真的有意义。 – Michael0x2a

+0

哦,我想f [:]意思是f [0:结束字符串]。感谢一吨清除我的疑问 – shubendrak

0

你可以这样认为:

f[0:5]0是起始位置和5-1末位置。

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

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