s="Python"
print(s[0:6:-1])
print(s[::-1])
'' #为第一个打印功能
' nohtyP' #for第二次打印功能
两者具有相同的含义,但提供不同的输出,我不明白这是为什么?
答案 0 :(得分:1)
从this answer到Understanding 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]