排除基于0的索引中的最后一个元素

And*_*yuk 2 python arrays programming-languages

有一次,当我阅读一些python文档时,我遇到了一篇文章的参考文献,该文章解释了为什么基于0的索引编程语言应该总是在切片等操作中排除最后一个元素:

>> a = [1, 2, 3]
>> a[0:1]
[1]  #and not [1,2]
Run Code Online (Sandbox Code Playgroud)

不幸的是我没有给它添加书签.有谁知道我在说什么文章?

PS:我欢迎任何解释为什么这是我的立即满意:-)

jus*_*ody 8

可能是EW Dijkstra的这张纸条吗?


Mar*_*tos 5

不,但至少有两个很好的理由:

  1. a[m:n]为您提供n - m个元素,可以轻松计算您要求的元素数量.
  2. 对于包含端点,请求空切片(a[3:2]?yuck)很尴尬.

编辑:我只想到了另一个特定于Python的原因:a [m:-n]排除了前m个和后n个项.如果它是包容性的,它将排除第一个m和最后n -1个项目,这更难以记住.

  • 另一个原因:a [m:n] + a [n:p] = a [m:p] (2认同)