>>> print("loops"[- 1:1:- 1]*2)
spospo
>>>
为什么输出不是slssls
?
答案 0 :(得分:2)
"loops"[-1:1:-1]
我们来看看slicing works:
的方式
s[i:j:k]
- 从s
到i
的{{1}}切片,步骤j
如果
k
或i
为负数,则索引相对于字符串的结尾:j
或len(s) + i
被替换。但请注意,len(s) + j
仍为-0
。
0
从s
到i
的切片j
被定义为索引为k
的项目序列,x = i + n*k
}。换句话说,索引是0 <= n < (j-i)/k
,i
,i+k
,i+2*k
等等,在达到i+3*k
时停止(但从不包括{{1} }})。如果j
或j
大于i
,请使用j
。如果省略len(s)
或len(s)
或i
,则它们会变为“结束”值(结束取决于j
的符号)。请注意,None
不能为零。如果k
为k
,则会将其视为k
。
所以None
表示1
,[-1:1:-1]
,i = -1
。
j = 1
为否定,因此k = -1
表示i
。 i = -1
为i = len(s) + (-1) = len(s) - 1
,因此我们得到以下切片:len(s)
。
根据上述定义,我们现在具有以下索引的项目:5
,"loops"[4:1:-1]
,4
。我们在4 - 1 = 3
停留,因为这是我们的结束,我们不包括它。
结果是索引4 - 2 = 2
,即4 - 3 = 1
。
最后,该字符串乘以4, 3, 2
,重复一次:'spo'
。