【问题标题】:Reverse string Python slice notation反转字符串 Python 切片表示法
【发布时间】:2017-03-08 06:53:33
【问题描述】:
string = "HELLO"
print string[::-1] #as expected
print string[0:6:-1] #empty string why ?

我惊讶地发现在 python 中反转字符串是多么容易,但后来我发现了这一点并迷路了。有人可以解释为什么第二个反向不起作用吗?

【问题讨论】:

  • 您阅读文档了吗?
  • 我想你也想反转索引。有关详细信息,请参阅the documentationpython In [14]: s = 'HELLO' In [15]: s[6:0:-1] Out[15]: 'OLLE'
  • 是的,我做到了,无法理解,因此在这里询问是否有人可以用更简单的术语解释一下。我只知道string[begin:end:step] 的事情很清楚,据此这应该没有用?
  • 就像@dmcdougall 所说,也许您需要反转索引。您告诉解释器从索引 0 开始并转到(过去)结束,但向后。在第一个索引之前你什么都没有。
  • 另见:stackoverflow.com/questions/509211/…... 我认为您可以使用string[4::-1] 明确地工作,但也不能明确指定最终值..

标签: python python-2.7 slice


【解决方案1】:

第二个字符串为空的原因是因为您告诉编译器从 0 开始,在 6 结束,每次都在步骤 -1 字符。

由于编译器将永远不会通过重复将 -1 加到 0(它变为 0、-1、-2、-3、...)来得到大于 6 的数字,因此编译器被编程为返回一个空字符串。

试试string[6::-1],这会起作用,因为重复将 -1 加到 6 会得到 -1(超过字符串的末尾)。

注意:这个答案主要是 @dmcdougall、@Ben_Love 和 @Sundeep 的 cmets 的汇编,并有更多解释

【讨论】:

    【解决方案2】:

    切片表示法如下:

    list_name[start_index: end_index: step_value]

    python 中的列表索引与数字行上的数字不同。当step_value-1 时,列表索引在0th 索引之后不会转到-1st

    因此产生以下结果

    >>>> print string[0:6:-1]

    >>>>

    还有

    >>>> print string[0::-1]

    >>>> H

    所以当start_index为0时,它不能以循环顺序遍历索引到-1、-2、-3、-4、-5、-6,因为step_value-1

    同样

    >>>> print string[-1:-6:-1]

    >>>> OLLEH

    >>>> print string[-1::-1]

    >>>> OLLEH

    还有

    因此,当start_index 为 -1 时,它以循环顺序遍历索引到 -1、-2、-3、-4、-5、-6 以给出输出OLLEH

    start_index 是 6 和 step_value 是 -1 时很容易理解

    >>>> print string[6::-1]

    >>>> OLLEH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-30
      • 2010-10-20
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 2014-07-21
      • 2012-02-15
      相关资源
      最近更新 更多