【问题标题】:If the first index is greater than or equal to the second the result is an empty string如果第一个索引大于或等于第二个,则结果为空字符串
【发布时间】:2017-06-27 16:29:16
【问题描述】:

在python切片中'如果第一个索引大于或等于第二个结果是一个空字符串'那么为什么下面的操作返回字符串?

>>> msg = 'HelloWorld'
>>> msg[4:-2]
'oWor'

【问题讨论】:

  • 因为你有-2,所以在列表中是反向的!

标签: python python-3.x


【解决方案1】:

您给出的报价不正确或不完整:

如果使用负数,则作为文件的反向索引,即[4:-2]等价于[4:len(msg)-2][4:8]

请注意,如果您使用反向索引比第一个索引更进一步,您确实会得到一个空字符串。

msg[4:-8] # Equivalent to msg[4:1], by the same formula
>>> ''

【讨论】:

  • 据我所知,这句话适用于 Python - 3.x 甚至 2.x - 只有当你考虑非负数时......从好的方面来说,你有为自己测试断言的良好反应:)
  • @veneth 如果答案让您满意,请不要犹豫,使用复选框接受 :) 它对将来可能与您有相同问题的人有所帮助!
【解决方案2】:

python 切片中的负数有效地从正数反向工作。他们从字符串的末端开始并向前移动。所以你的代码说的是给我一个从第 4 个索引开始的字符串,一直到最后的 2。

【讨论】:

    【解决方案3】:

    如果为负数,则从右开始计数。 -1 是最后一个字符。要从正确的索引位置访问字符串,我们需要使用 - 和索引号。所以对于 -2,它就像在 l 之前取字符(对于给定的例子),它的总长度必须是 4。所以它只会是 owor。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2013-12-24
      相关资源
      最近更新 更多