[英]Reverse string Python slice notation
string = "HELLO"
print string[::-1] #as expected
print string[0:6:-1] #empty string why ?
我很惊讶地看到在 python 中反转字符串是多么容易,但后来我发现了这一点并迷路了。 有人可以解释为什么第二个反向不起作用吗?
第二个字符串为空的原因是因为您告诉编译器每次从 0 开始,以 6 和步骤 -1 字符结束。
由于编译器将永远不会通过将 -1 重复添加到 0(它变为 0、-1、-2、-3、...)来获得大于 6 的数字,因此编译器被编程为返回一个空字符串。
尝试string[6::-1]
,这会起作用,因为重复添加 -1 到 6 将得到 -1(超过字符串的末尾)。
注意:此答案主要是@dmcdougall、@Ben_Love 和@Sundeep 的评论的汇编,并附有更多解释
切片符号的写法如下:
list_name[start_index: end_index: step_value]
python 中的列表索引与数轴上的数字不同。 列表索引不会去-1st
后0th
指数当step_value
是-1
。
因此产生以下结果
>>>> print string[0:6:-1]
>>>>
并且
>>>> print string[0::-1]
>>>> H
所以当start_index
为 0 时,它不能以循环顺序遍历索引到 -1, -2, -3, -4, -5, -6 for step_value
is -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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.