【问题标题】:Why are slices endindex not the endindex [duplicate]为什么切片 endindex 不是 endindex [重复]
【发布时间】:2013-04-01 09:24:44
【问题描述】:

我刚开始学习 python,我已经开始学习字符串切片了。

当我输入时

suitcase = ["sunglasses", "hat", "passport", "laptop", "suit", "shoes"]
print suitcase[0:1]

我希望它打印['sunglasses', 'hat],但我得到['sunglasses']。根据我的阅读,它是aList[beginIndex:endIndex],但根据我的经验,它更像是aList[beginIndex:endIndex+1] 来获取您最后拥有的索引。

有人能解释一下为什么会这样吗?我无法理解其背后的原因。

【问题讨论】:

  • 那么您希望如何选择第一个元素?我认为这几乎是推理。

标签: python python-2.7 slice


【解决方案1】:

来自docs:“从 i 到 j 的 s 切片定义为索引为 k 的项目序列,使得 i

【讨论】:

    【解决方案2】:

    在我看来,最好的论点是您可以使用endIndex - startIndex 获取切片返回的元素数量。

    这也与内置的range()函数密切相关。如果使用两个参数,它们将被解释为开始和停止索引,但如果只使用一个,则它是停止索引,并且开始索引设置为0。所以range(5) 给出了一个包含 5 个元素的列表。如果切片按照您认为的方式工作,那么 range() 可能会有相同的行为,而 range(5) 返回 6 个元素会很混乱。

    【讨论】:

      【解决方案3】:

      Python 中的切片被定义为包含/排他,即,您想要的第一个项目,然后是您想要的第一个项目。

      我不知道具体为什么他们这样做,但它与range() 的工作方式是一致的,并且与len() 一起工作也很好(也就是说,整个容器的一部分x 是@987654324 @);这也适用于负切片:x[-1]x[len(x)-1]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-23
        • 2013-05-19
        • 1970-01-01
        • 2015-02-03
        • 2011-03-15
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多