我刚刚开始学习python而且我已经开始学习字符串了。
当我输入
suitcase = ["sunglasses", "hat", "passport", "laptop", "suit", "shoes"]
print suitcase[0:1]
我希望它能打印['sunglasses', 'hat]
,但我得到['sunglasses']
。从我所读到的aList[beginIndex:endIndex]
开始,但根据我的经验,它更像是aList[beginIndex:endIndex+1]
来获取你最后的索引。
有人可以解释为什么会这样吗?我无法理解它背后的原因。
答案 0 :(得分:2)
从docs:“从i到j的s片被定义为具有索引k的项目序列,使得i <= k
答案 1 :(得分:2)
我认为最好的论据是你可以使用endIndex - startIndex
获得切片返回的元素数量。
这也与内置的range()
函数密切相关。如果使用两个参数,则将它们解释为启动和停止索引,但如果仅使用一个,则它是停止索引,并且起始索引设置为0
。所以range(5)
给出了一个包含5个元素的列表。如果切片工作,他们认为他们应该range()
可能会有相同的行为,range(5)
返回6个元素会非常混乱。
答案 2 :(得分:0)
Python中的切片被定义为包含/排他,即您想要的第一个项目,然后是不想要的第一个项目。
我不知道为什么他们这样做,但它与range()
的工作方式一致,并且与len()
(也就是整个容器的切片{{ 1}}是x
);这也适用于否定切片:[0:len(x)]
为x[-1]
。