"取0为开始"是某种意义上的编程语言规范,虽然不遵守这个规范的更多,甚至可能最开始就是从1开始的数组,但是在现在的语境下,使用0作为数组开头能够节省很多新语言的理解成本.

怼法进阶: 计数从0开始,是程序员偷懒的设定之一
写数组的时候,经常会涉及溢出问题,大多数人是这么解决的:
数组a长度n,每次操作取a[(count+1)%n]
发现没,count%n,就是取余操作
余数如果从1开始算,我需要这么写才能让数组作取余, a[ count % n ], 但是a[n]=a[n%n]=a[0],那么我就需要针对a[n]作特殊处理,也就是写一层 if, 就增加了代码量
怼法高级: 从操作系统原理来讲,数组的本质是一串连续的地址
数组中的a[n]所代表的数据的地址,其实是a的头地址+n*(数组代表的数据类型所占用的空间),鉴于老程序员一般要学习操作系统,要求了解系统底层,在系统层面上去理解代码的话,数组从0开始明显比从1开始更容易去理解.
现在的Python数组之所以支持多种数据类型,是因为Python数组有点类似编程中的"链表"技术,就是"需要的时候随机取走一块空间,通过逻辑地址的方法去索引",而不是像数组一样,直接从内存取走一大块固定的空间,通过物理的方法去索引修改.
这个问题比较主观,不好确定哪本书写的最好。1.每个人都有自己的学习习惯和需求,即使是最好的书可能也无法满足所有人的需求。2.如果您是Python入门者,可以考虑阅读《Python编程——从入门到实践》。如果您想系统的学习Python语言,可以选择《Python核心编程》。如果您是一名数据分析师,可以阅读《利用Python进行数据分析》等。3.总之,要想找到一本最好的Python书籍,最好的方式是在读者评价中做出选择。建议您自己阅读一些书籍,找到适合自己的那本。
list类似于 Vector对象和指针数组是分开分配的,数组是在堆上。指针数组的大小是动态分配的,分配的内存肯定要多于实际的。既然是动态分配的,那么realloc调整大小就会移动数据,复制数据,大量数据还是用链表比较好。dict类似于 Hash table字典本身默认有元素容量,不够的才去堆上分配。需要扩容或者收缩,就会动态重新分配内存,重新hash。dict的keys()等调用生成list 如果数量很大,建议用迭代器。
Python简写叫py,C语言简写就是C。不过C语言三个字本身也就“够简单”的了,所以,一般就不再简化了,但是在专门讲编程语言时,也可以简称为“C”的。不过,一般场合下若单独说C,可能会让人难以听懂的。