Python数组中带有-1索引的原因不明的行为

时间:2015-01-03 00:05:50

标签: python list

当我发现这个时,我正试图做一些字符串操作:

s = "hefehefe"

l = len(s)

s[:l] # Outputs `hefehefe`

s[l-1::-1] # Outputs `hefehefe`

s[-1] # Outputs 'h'

s[l-1:-1:-1] # Outputs empty ' '

为什么Python在执行最后一行时无法识别带有-1索引的迭代结束?这是列表索引的已知行为吗?

1 个答案:

答案 0 :(得分:3)

你的几个断言都是假的:你说

s[l-1::-1] # Outputs `hefehefe`
s[-1] # Outputs 'h'

但是任何拥有Python交互式解释器以及复制和粘贴功能的人都可以看到:

>>> s[l-1::-1] # Outputs `hefehefe`
'efehefeh'
>>> s[-1] # Outputs 'h'
'e'

请不要轻易做出明确的错误断言:好。