Python切片语法的优点

0 投票
1 回答
627 浏览
提问于 2025-04-18 04:32

在Python的切片语法中,为什么结束索引是“end-1”而不是“end”有什么好处呢?

比如说,如果有一个列表a = [2,3,4],那么a[0:2]会得到[2,3],而a[1:3]会得到[3,4]。对于a[0:2]这个例子,我能理解“前两个元素”的意思,但对于其他不是从0开始的情况,我就不太明白了。感觉如果结束索引是“end”,会更直观一些。

难道这种写法有什么我没想到的好处吗?

1 个回答

1

因为这是Guido(Python的创始人)设计的方式。

使用从0开始的索引、半开区间和合适的默认值(正如Python最终所采用的那样),这些设计是很美的:比如说a[:n]和a[i:i+n];前者比a[0:n]更简洁。

但是,索引和长度的这种约定在其他情况下是怎么运作的呢?老实说,这部分我记得不是很清楚,但我想我被半开区间的优雅所吸引。特别是当两个切片相邻时,第一个切片的结束索引正好是第二个切片的开始索引,这种设计实在是太美妙了。举个例子,假设你把一个字符串在索引i和j处分成三部分——这些部分将是a[:i]、a[i:j]和a[j:]。

撰写回答