为什么s [0:4:-1]在Python中什么也不返回?

林思德

s = 'abcdefg's[0:4:-1]s[1:-1:-1]在Python3任何回报。但是,s[:4:-1]返回"gf"谁能解释这两种情况背后的机制(尤其是在内存方面)?

奥利维尔·梅兰松(OlivierMelançon)

start永远的第一指标的迭代。

stop结束边界的迭代。

step给出了一个方向步长的迭代。因此,迭代总是沿的符号所给定的方向startstop进行step

因此s[start:stop:step],就是要把人物s[start]s[start + step]s[start + 2 * step],......,依此类推,直到stop达到。

换句话说,s[start:stop:-1]不等于reversed(s[start: stop])

例子

因此,在您的示例中s[0:4:-1],的值为step负,因此迭代过程立即停止,因为start索引已位于的左侧。stop.

a b c d e f g h
0 1 2 3 4 5 6 7
^       ^
s       s
t       t
a       o
r       p
t

<-------- orientation

另一方面,如果尝试s[4:0:-1],则会得到提示'edcb'(请记住stop索引已排除在外)。

a b c d e f g h
0 1 2 3 4 5 6 7
^       ^
s       s
t       t
o       a
p       r
        t

<-------- orientation

最后,在string的末尾start留空意味着这就是为什么您看到所有字符从头到尾反向显示的原因。4

a b c d e f g h
0 1 2 3 4 5 6 7
        ^     ^
        s     s
        t     t
        o     a
        p     r
              t

<-------- orientation

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章