
这是一张公开课程的照片。在这张照片里,s='Arthur',s[5:2:-2] == 'ut'。这是合理的,因为[:2]是"Ar“,而[3:]是"hur",但这在现实中是错误的。我输入了s[5:2:-2],输出为"rh“。我也理解它,因为索引5是'r',但是由于:2从‘r’开始,反向5应该从'u‘开始。这真的很让人困惑,这是一门来自顶尖大学的很好的课程。哪里出问题了?
发布于 2016-11-22 08:23:14
看来作者确实犯了错误。通常的建议是将字符串索引看作字母之间的位置,而不是字母本身,因此索引5位于u和r之间。但是这种精神帮助只适合于积极的步骤。负的1步比较容易理解:如果您编写s[5:4:-1],您将把字母提取到索引5的右边,即r。类似地,s[1:0:-1]会给您第二个字母:r。
这意味着s[5:4:-1]选择s[5],即它与s[5:6:1]的字符串位置相同,而不是s[4:5:1]作为该映像的创建者。换句话说,实际情况是,索引5真正地选择了一个字符,而不是字符间的位置。带负步长的切片从索引5处的字符开始,然后按步骤向后移动。在切片的第二个索引处,切片确实在字符之前停止;假装索引在字符之间是一种很好的直观帮助,但是正如您已经发现的,只有当切片步骤是正的时候才是合适的。
https://stackoverflow.com/questions/40736688
复制相似问题