0

我刚开始学习 python,我已经开始学习字符串切片了。

当我输入

suitcase = ["sunglasses", "hat", "passport", "laptop", "suit", "shoes"]
print suitcase[0:1]

我希望它能够打印['sunglasses', 'hat],但我得到了['sunglasses']。从我读过的内容来看aList[beginIndex:endIndex],但从我的经验来看,它更像aList[beginIndex:endIndex+1]是让你最后拥有的索引。

有人可以解释为什么会这样吗?我无法理解其背后的原因。

4

3 回答 3

2

来自文档:“从 i 到 j 的 s 切片被定义为具有索引 k 的项目序列,使得 i <= k < j。”

于 2013-04-09T19:14:46.487 回答
2

我认为最好的论点是您可以使用endIndex - startIndex.

这也与内置range()函数密切相关。如果使用两个参数,则它们被解释为开始和停止索引,但如果只使用一个,则它是停止索引并且开始索引设置为0。所以range(5)给出了一个包含 5 个元素的列表。如果切片按照您认为应该的方式工作,那么range()可能会有相同的行为,并且range(5)返回 6 个元素会很混乱。

于 2013-04-09T19:15:24.677 回答
0

Python 中的切片被定义为包含/排他,即您想要的第一项,然后是您想要的第一项。

我不知道具体为什么他们这样做,但它与range()工作原理一致,并且也适用于len()(即整个容器的一部分x[0:len(x)]);这也适用于负片:x[-1]is x[len(x)-1].

于 2013-04-09T19:22:25.143 回答