python 的列表是从0还是1开始的_为什么python的索引要从0开始?从1开始不是更简便吗?...

我觉得都是为了计算机处理的方便。

先从为什么大部分语言索引都是从 0 开始说起

1、编程语言的索引从 0 开始,这要追溯到 BCPL 语言的设计。当时主要考虑到指针使用的一个问题,一个数组的起始地址是 a,假设一个元素的大小是 s 个字节,如果索引从 0 开始,第 n 个元素的地址是 a + n * s;而如果索引从 1 开始,地址就是 a + (n - 1) * s。这样的话,使用从 0 开始的索引就少一次减法计算,由于当时计算机对于运行效率的高要求,也就使用了这种设计。后面的 C、Lisp 等,由于这种设计的影响,也选择了索引从 0 开始

2、索引从 0 开始,使用左闭右开区间,可以比较直观的看出表达式的意思。比如,循环的时候, [0, n) 表示迭代 n 次;访问数组的时候,[0, n) 表示访问数组的前 n 个元素;...。

3、当需要循环访问数组时,由于索引从 0 开始的,我们使用取余的方式,很方便的能回到数组的第 0 个元素。比如我们访问一个大小为 N 的数组 3 次,我们可以使用 [0, 3N) 区间,当迭代到 2N 时,2N % N = 0,我们就第三次访问到了第 0 个元素

也就是说,索引从 0 开始,能让编程的实现方式更优雅一些,有时还能提高效率。

我觉得 Python 语言的索引从 0 开始也是基于上面的考虑。

至于题主说,从 1 开始不是更简便,我是体会不到的。比如,同样是取列表的前 n 个元素,你觉得是 a[:n](a[0:n])还是 a[1, n + 1] 更简便,更优雅?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值