为什么打印出spospo?

时间:2015-11-15 15:12:10

标签: python

>>> print("loops"[- 1:1:- 1]*2)
spospo
>>>

为什么输出不是slssls

1 个答案:

答案 0 :(得分:2)

"loops"[-1:1:-1]

我们来看看slicing works

的方式
  

s[i:j:k] - 从si的{​​{1}}切片,步骤j

     

如果ki为负数,则索引相对于字符串的结尾:jlen(s) + i被替换。但请注意,len(s) + j仍为-0

     

0si的切片j被定义为索引为k的项目序列,x = i + n*k }。换句话说,索引是0 <= n < (j-i)/kii+ki+2*k等等,在达到i+3*k时停止(但从不包括{{1} }})。如果jj大于i,请使用j。如果省略len(s)len(s)i,则它们会变为“结束”值(结束取决于j的符号)。请注意,None不能为零。如果kk,则会将其视为k

所以None表示1[-1:1:-1]i = -1

j = 1为否定,因此k = -1表示ii = -1i = 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'