string = "HELLO"
print string[::-1] #as expected
print string[0:6:-1] #empty string why ?
我惊讶地发现在python中反转一个字符串是多么容易,但后来我突然发现并迷路了。有人可以解释为什么第二次逆转不起作用吗?
答案 0 :(得分:1)
第二个字符串为空的原因是因为您告诉编译器从0开始,每次结束时为6,每次步骤为-1个字符。
由于编译器通过重复地将-1加到0(它变为0,-1,-2,-3,...)而永远不会得到大于6的数字,因此编译器被编程为返回空字符串。
尝试string[6::-1]
,这样可行,因为重复添加-1到6将变为-1(超过字符串结尾)。
注意:这个答案主要是@dmcdougall,@ Ben_Love和@Sundeep的评论汇编,附有更多解释
答案 1 :(得分:1)
切片表示法编写如下:
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 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