首页 > 编程知识 正文

python返回列表元素下标,list的下标从0还是1开始

时间:2023-05-04 17:23:26 阅读:26429 作者:243

有人问我为什么在推特上使用Python以0为首位的数组索引法(0-based ),并返回了指向相关优秀文章的链接。 我会想起很多往事。 Python的前身之一,ABC语言使用以1为首的数组索引方法(1-based ),对Python有很大影响的c语言使用0-based。 我初期开发的程序语言(Algol、Fortran、Pascal )有的使用1-based,有的灵活。 我认为切片语法是我做这个决定的理由之一。

我们先来看看切片语法的使用。 最常用的是“剪切数组的前n位”和“剪切数组的第I位后的n位”。 (前者是后者在i==开始位之下的特例。 如果不需要使用难看的1或-1补偿方式,代码会变得相当漂亮。

通过使用0-based索引方法,Python的半开区间和缺省匹配区间分别为a[:n]和a[i:i n]; 前者是a[0:n]的缩写。

在1-based索引方法中,如果要用a[:n]表示剪切前n个元素,则只能在切片语法中使用切片起始位和切片长度两个参数,或选择封闭区域的用法。 使用1-based索引法时,半开区间的切片语法看起来不漂亮。 同样,使用闭区间切片语法,只能用a[i:i n-1]表示从第I个开始取n个元素。 因此,如果使用1-based索引方法,则更适合使用切片长度。 可以写a[i:n]。 其实,ABC语言就是这样的——,用的是写着a@i|n的特殊用法。 (见http://home pages.CWI.nl/~ Steven/ABC/QR.html # expressions )

但是index:length的使用方法适合其他情况吗? 老实说,我不太记得了,我想我当时确实喜欢漂亮的半开区间语法。 特别是,如果两个切片操作的位置相邻,而第一个切片操作的终点索引是第二个切片的起点索引,则书写起来非常漂亮。 例如,如果尝试在I,j这两点上分隔数组,则为a[:i]、a[i:j]和a[j:]。

这就是Python使用0-based索引法的原因。

【编辑推荐】

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。