【问题标题】:Why is that slicing expression generating that output [duplicate]为什么该切片表达式会生成该输出[重复]
【发布时间】:2019-01-14 18:17:36
【问题描述】:

我知道了:

#slicing: [start:end:step]
s = 'I am not the Messiah'
#s[0::-1] = 'I'

所以在这种情况下

start=0, end=0, step=-1

为什么

s[0::-1] == 'I'
>>>> True

【问题讨论】:

  • end 不是0 它是None 所以它默认为s[0:-len(s)-1:-1]s[0:-21:-1]
  • @Chris_Rands 我不确定这是否是相关的骗局。我的意思是它解释了它背后的机制,但我承认对于查看参数如何命名的人来说仍然会感到困惑。
  • @scharette 我认为这个骗局是正确的,但我也添加了一个更通用的副本,以防他们需要更基本的切片解释

标签: python slice


【解决方案1】:

因为在这种情况下,-1 是一个反向步进。

所以当你说

s[0::-1]

您实际上是从位置0 倒退到-1 其中包含0

因此,在您的情况下返回 I

请注意,当我说位置 0-1 时,我的意思是它将包括位置 0 并在之后停止切片,因为 -1 索引无效(这与像 my_list[-1] 这样的反向索引不同)

【讨论】:

    【解决方案2】:

    因为您的切片从索引 0 开始,每次步进 -1,这意味着它会立即到达边界,只在切片中留下序列中的第一项,即 'I'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多