为什么没有发生字符串反转?

时间:2017-11-09 09:00:20

标签: python python-3.x

s="Python"

print(s[0:6:-1])

print(s[::-1])

输出

'' #为第一个打印功能

' nohtyP' #for第二次打印功能

两者具有相同的含义,但提供不同的输出,我不明白这是为什么?

1 个答案:

答案 0 :(得分:1)

this answerUnderstanding Python's slice notation

  

如果stride为负数,则排序会因为我们倒计时而改变一点:

>>> seq[::-stride]        # [seq[-1],   seq[-1-stride],   ..., seq[0]    ]
>>> seq[high::-stride]    # [seq[high], seq[high-stride], ..., seq[0]    ]
>>> seq[:low:-stride]     # [seq[-1],   seq[-1-stride],   ..., seq[low+1]]
>>> seq[high:low:-stride] # [seq[high], seq[high-stride], ..., seq[low+1]]

所以你注意到当你使用负步幅时指定高和/或低界限时,不可能获得所有元素。你总是缺一个。

所以s[0:6:-1]没有打印,因为低>高。但即使s[6:0:-1],你也只缺一封信。满足您要求的唯一参数是None(或无参数):s[6:None:-1]