这是一个开放课程的图片。在此图片中,s='Arthur'
,s[5:2:-2] == 'ut'
。这是有道理的,因为[:2]
是" Ar"并且[3:]
是" hur",但实际上这在某种程度上是错误的。我键入s[5:2:-2]
,输出为" rh"。我也得到它,因为索引5是' r',但由于:2
从' r'开始,反向5应该从' u'开始。这真的令人困惑,这是一所顶尖大学的好课程。哪里出错了?
答案 0 :(得分:2)
看起来作者确实做了一个嘘声。将字符串索引视为字母之间的位置而不是字母本身,这是常见的建议,因此索引5介于u
和r
之间。但这种精神援助只适用于积极的步骤。使用否定步骤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
处的字符处开始,然后逐步向后移动。切片确实在切片的第二个索引处的字符前停止;假装索引在字符之间是一个很好的直观帮助,但正如你发现它只适用于切片步骤为正。