如果我使用正开始索引值和负停止和步进索引值,为什么会得到空字符串?

问题描述 投票:0回答:1

我正在尝试运行此代码片段:

test="test"
print(test[3:-1:-1])

对于切片,起始索引应从 3 开始(含),停止索引应为 -1(不包括),这意味着它应该一直到 0(含),切片的顺序与我提到的步骤相反,为 -1,但是我得到的结果是空字符串。

为什么这段

test[3:-1:-1]
不等于
test[3::-1]

python-3.x string slice
1个回答
0
投票

我是这样理解的。负索引更多是为了方便而不是为了逻辑。

例如,要表示最后一个字符:无需计算字母或提及

test[len(test)-1]
,而是可以轻松提及
test[-1]
。所以这里的逻辑是:如果你开始将第一个字符索引为 0,为了表示反向表示,你应该从 -1 开始计数。如果还添加第一个字符,如果添加-1,逻辑上不能有两个具有相同索引的值。所以第一个字母的前一个字符变成-5(对于字符串测试)

所以应该遵循以下任何一个:

print(test[3:-5:-1])
print(test[-1:-5:-1])
print(test[::-1]) 
© www.soinside.com 2019 - 2024. All rights reserved.