Shixiang Wang

>上士闻道
勤而行之

快速理解基于 0 的索引

王诗翔 · 2020-08-18

分类: thinking  
标签: 编程   索引  

编程语法中有基于 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 两种索引机制萦绕心头,转换一直感觉心头存在阻碍,这也算是一朝悟道了。