【叶凡网络】浅谈Python之父诉说为什么Python数组下标是从0开始

2014-02-08 11:22:41 | 新闻来源:叶凡网络 | 点击量:898

最常见的使用应该是切出数组的前n位”和“切出数组第i位后的n位”前者是后者在i==起始位下的特例)如果我不需要使用难看的+1或-1弥补方式。Python半开区间以及缺省匹配区间都很美观,通过使用0-base索引法。如:a[:n]和a[i:i+n]前者是a[0:n]省略写法。

这就是Python使用0-base索引法的原因,ABC语言使用的以1为首位的数组索引方式(1-base而对Python有着巨大影响的C语言则使用的0-base早期开发的顺序语言(AlgolFortranPascal有的使用1-base有的则比较灵活。认为切片语法是做出这个决定的原因之一。曾经有人在Twitter上问我为什么Python使用以0为首位的数组索引法0-base并且还给我一个相关优秀文章的链接。

 

我想我当时的确很喜欢它美观的半开区间语法,特别是两个切片操作位置相邻并且第一个切片操作的终点索引就是第二个切片的起点索引的时候,写法实在太漂亮了比方,想以i,但是index:length用法适合其它情况吗?老实说。j两点来切分一个数组的话,将会是a[:i]a[i:j]和 a[j:]。

如果你想用a[:n]来表示切出前n个元素的话,只能选择在切片语法中使用切片起始位和切片长度2个参数,或者闭区间的用法。使用1-base索引法,半开区间切片语法就显得不够美观。同样地,使用闭区间切片语法的话,只能用a[i:i+n-1]来表示从第i位取n个元素。

所以如果使用1-base索引法的话,使用切片长度更合适。可以写成a[i:n]事实上,1-base索引法下。A BC语言就是这样的用了一种特殊的用法。

上一篇:【叶凡网络】印尼的火山喷发形成场面壮观的“火山碎屑流” 下一篇:【叶凡网络】襄阳国家安全局纪委书记撞人致1死2伤后驾警车逃逸