【问题标题】:Using slice operator [:] on python string do not cause Out of Bound error [duplicate]在 python 字符串上使用切片运算符 [:] 不会导致超出范围错误 [重复]
【发布时间】:2013-11-23 16:13:37
【问题描述】:

我刚刚开始学习 python,我正在玩切片 (:) 运算符和字符串。出于某种原因,如果我在切片运算符后指定了一个无效索引,它不会给出“超出范围”错误。

>>> s='Hello'
>>> print s[5]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range

>>> print s[5:]
//Prints just a newline, no error

谁能解释一下为什么我在第二种情况下没有出错。

【问题讨论】:

  • 不,切片永远不会导致越界异常。

标签: python string


【解决方案1】:

来自slicing上的文档:

退化的切片索引被优雅地处理:一个太大的索引被字符串大小替换,一个小于下限的上限返回一个空字符串。

换句话说:索引可能太大,但在这种情况下,它会被字符串大小替换。

请注意,您的字符串 s 有五个字符,因此 s[5:] 与调用 s[len(s):] 相同,这与获取空字符串相同(因为缺少的上限也默认为 len(s),所以它最终变成s[len(s):len(s)])。

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 2015-11-18
    • 2018-02-07
    • 2012-09-04
    • 2015-01-19
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2017-03-26
    相关资源
    最近更新 更多