快速理解基于 0 的索引
王诗翔 · 2020-08-18
编程语法中有基于 0 或 1 两种索引机制,前面一种与计算机本质更接近,使用也更多,但对之前的我带来不少理解的困难。
例如,在 Python 中的列表和元组结构中,我们需要进行切片。
a[3:5]
上面这种切片操作中,我通常的理解是先将其转换为实际的索引区间,考虑到左闭右开原则,上述切片指向数据的索引 3-0=3
到索引 5-1=4
;而索引 3 对应第 4 个元素,索引 4 对应第 5 个元素。因此,切片的操作区间为第 4 到第 5 个元素。
今天在学习 Go 切片时,我突然发现我的索引理解绕了几个步骤,实际操作时,我们仅仅需要将这里的 3
加 1 即可得到基于 1 开始的索引理解。因而,如果我们需要反过来设计我们想要提取的索引区间,例如要第 5 个到第 8 个,我们相应地对 5 减去 1 即可。
可能之前 R 和 Python 两种索引机制萦绕心头,转换一直感觉心头存在阻碍,这也算是一朝悟道了。