【发布时间】:2014-02-24 05:41:31
【问题描述】:
在 Python 中,我想知道为什么切片会以它们的方式工作。为什么 Guido van Rossum 定义 a[start:end] 包含 a[start] 而不 a[end],或者如标题所示,为什么 a[0:1] 只包含第一个元素而不包含前两个?
这似乎是从 MATLAB 的索引行为退一步。
编辑:我问这个问题的原因是a[0:0] 是空的,这令人困惑。但是我没有设计流行的语言,所以我知道什么。
【问题讨论】:
-
因为不包括结束索引与从 0 开始的索引完全吻合。
range(10)产生从 0 到 9 的索引,使用sequence[:len(sequence)]进行切片工作,等等。 -
我注意到 MATLAB 使用基于 1 的索引,这意味着封闭式索引是有意义的。但是,您不会在 MATLAB 中获得我们在 Python 中的
a == a[:end] + a[end:]不变量。