Python索引冲突

时间:2016-11-22 08:08:55

标签: python list indexing

这是一个开放课程的图片。在此图片中,s='Arthur's[5:2:-2] == 'ut'。这是有道理的,因为[:2]是" Ar"并且[3:]是" hur",但实际上这在某种程度上是错误的。我键入s[5:2:-2],输出为" rh"。我也得到它,因为索引5是' r',但由于:2从' r'开始,反向5应该从' u'开始。这真的令人困惑,这是一所顶尖大学的好课程。哪里出错了?

1 个答案:

答案 0 :(得分:2)

看起来作者确实做了一个嘘声。将字符串索引视为字母之间的位置而不是字母本身,这是常见的建议,因此索引5介于ur之间。但这种精神援助只适用于积极的步骤。使用否定步骤1更容易看到:如果您写s[5:4:-1],则会将字母提取到索引5,即{{ 1}}。同样,r会为您提供第二个字母:s[1:0:-1]

这意味着r选择s[5:4:-1],即它与s[5]的字符串位置相同,而不是s[5:6:1],因为该图像的创建者明确假设。换句话说,现实是指数s[4:5:1]确实选择了一个角色,而不是一个角色间位置。带有否定步骤的切片在索引5处的字符处开始,然后逐步向后移动。切片确实在切片的第二个索引处的字符前停止;假装索引在字符之间是一个很好的直观帮助,但正如你发现它只适用于切片步骤为正。