1.列表是如何存储的?
列表是一块连续的内存空间,上一个数下一个数是连续的
列表叫动态表,数组叫线性表
2.列表可以做哪些操作?
根据索引查(读)、改(写) ----- 时间复杂度O(1)
删除,插入(最后一位删除pop或插入append,时间复杂度是O(1))---- 时间复杂度O(n)
2. 列表在其他语言中叫 ”数组“,”数组“较列表底层,他们的区别:
int a[5]:
数组的长度是固定的,在声明时就要设定它的长度,不能追加,而列表长度不固定,可以随意append
数组中存放的数据必须是相同的,要是字符串(整数、对象)就都是字符串(整数、对象),而列表没有这个要求,可以既要字符串,又有整数、对象等数据类型。
3. 说说数组:
(1)数组是一块连续的内存空间
(2)列表叫动态表,数组叫线性表
(3)根据索引查(读)、改(写) ----- 时间复杂度O(1)
删除,插入(最后一位删除pop()或插入append(),时间复杂度是O(1))---- 时间复杂度O(n)
(4)增加数据:长度是固定的,那要想数组长度变长怎么办?再申请一块更大的内存空间,把之前的数组copy过来,然后把之前的内存空间释放掉就可以了。时间复杂度是O(1)
(5)修改数据:存放的数据必须相同,要是不想相同呢,不直接在内存中存数据,把每个数据存到不同的内存地址中,把每个内存地址存放到内存中。此时要想修改数据,就不能按照索引来改了,而是应该再开辟一块内存空间,将数据存进去,再将该内存地址存放到内存中,将之前数据的内存地址覆盖掉。