为什么这个列表切片在Python中将0和1视为相同?

时间:2014-02-28 05:50:45

标签: python python-2.7 slice

我对切片列表和编号感到有些困惑。

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

2 个答案:

答案 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,这是另一个方便的功能。