为什么切片表达式生成该输出

时间:2018-08-07 15:30:30

标签: python slice

我明白了:

#slicing: [start:end:step]
s = 'I am not the Messiah'
#s[0::-1] = 'I'

所以在这种情况下

start=0, end=0, step=-1

为什么是

s[0::-1] == 'I'
>>>> True

2 个答案:

答案 0 :(得分:3)

因为,-1在这种情况下是相反的步进。

因此,当您说

s[0::-1]

您实际上是从位置0向后退到-1 其中包含0的地方

因此,在您的情况下返回I

请注意,当我说位置0-1时,我的意思是它将包含位置0并在之后停止切片,因为-1索引无效(这与反向索引不同)像my_list[-1]

答案 1 :(得分:1)

因为您的分片每次从索引0开始,并从步骤-1开始,这意味着它立即触及了边界,仅将序列中的第一项(即'I')留在了分片中。