我对切片列表和编号感到有些困惑。
Python倾向于从0开始而不是1,并且下面显示的是以这种方式工作得很好。但是,如果我们从0开始,直到3,为什么我没有exam
而不是exa
?毕竟,0 - 3是4个数字。
>>> test = "example string"
>>> print test[:3]
exa
>>> print test[0:3]
exa
>>> print test[1:3]
xa
答案 0 :(得分:1)
如果你有
text[0:3]
它会将元素从0
返回到3 - 1
。
text[0]
text[1]
text[2]
不
text[3]
一般情况下,它会将值从start
返回到end - 1
。有关详细信息,请阅读this。
答案 1 :(得分:1)
这是一种有意的方式,最后一个元素是独占的。
为什么会这样?
首先,我的理解是因为test[0:len(test)]
应打印所有列表,然后test[0:len(test)-1]
排除一个元素。与包含最后一个元素相比,这更漂亮,更易读。
其次,这是因为如果你有test[:-1]
它将返回所有元素,但是最后一个,这是非常直观的。如果它包含第二个索引,要删除最后一个元素,你必须做test[:-2]
这是丑陋的,这使得它更难阅读......
此外,结果列表的长度为end - start
,这是另一个方便的功能。