繁体   English   中英

反转字符串 Python 切片表示法

[英]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 中的列表索引与数轴上的数字不同。 列表索引不会去-1st0th指数当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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM