Python 列出切片的开始和结束

Python 列出切片的开始和结束,python,Python,有人能解释一下为什么在string[start:end:stride]中,开始总是从0开始,而结束总是从1开始 比如说 string[0:3:1]将结果输出为“ABC”。正如你所见,我说的end=3那么字符串[0:3:1]不应该是“ABCD”,因为计算机首先读取0 还有一件事为什么:我没有得到一个结果 字符串[0:8:-1]。是不是应该是“HGFEDCBA”?我不知道它是否是错误的语法,但我可以打印字符串[:-1]的结果,因为len(string)=8,所以片字符串[0:8]被解释为“所有内存索

有人能解释一下为什么在
string[start:end:stride]
中,开始总是从
0
开始,而结束总是从
1
开始

比如说
string[0:3:1]
将结果输出为
“ABC”
。正如你所见,我说的
end=3
那么
字符串[0:3:1]
不应该是
“ABCD”
,因为计算机首先读取
0

还有一件事为什么:我没有得到一个结果
字符串[0:8:-1]
。是不是应该是“HGFEDCBA”?我不知道它是否是错误的
语法
,但我可以
打印
字符串[:-1]
的结果,因为
len(string)=8
,所以片
字符串[0:8]
被解释为“所有内存索引0-7”(即8个总索引)。python中的最后一个索引是“最多但不包括”


对于问题的第二部分,语法是
string[7::-1]
<代码>字符串[0:8:-1]
从0开始并尝试递增“backward”,但由于在迭代开始时已达到“0”,因此不会进行遍历。

因为包含了
start
,而不包含
end
。这样,
end-start
将为您提供切片的长度。当您有一个长度为
n
列表时,
list[n]
超出范围,最后一个元素将是
list[n-1]
谢谢大家,现在有意义了。
string = "ABCDEFGH"