在Python切片语法中使结束索引产生从“开始”到“结束1”的字符有什么好处?
也就是说,我明白如果a = [2,3,4],那么[0:2]得到[2,3],而[1:3]得到[3,4]。我看到a [0:2]情况下“前2个字符”的直观含义,但是我没有看到如果没有0作为起始索引的其他情况如何清楚。将语法从“开始”改为“结束”似乎更直观。
或者我没有看到这种语法的优点?
答案 0 :(得分:1)
Because Guido made it that way.
使用基于0的索引,半开间隔和合适的默认值(如Python最终有的),它们很漂亮:a [:n]和[i:i + n];前者长的是[0:n]。
但是index:length约定如何解决其他用例? TBH这是我的记忆变得模糊的地方,但我认为我被半开放间隔的优雅所左右。特别是当两个切片相邻时,第一个切片的结束索引是第二个切片的起始索引太漂亮而不能忽略的不变量。例如,假设您在索引i和j处将字符串拆分为三个部分 - 部分将是[:i],a [i:j]和[j:]。