1.列表与元组的相似之处
a. 列表与元组都是可以用于储存不同的数据类型有序集合
li = ['cdsc',1245,'dsd',5678] ## 列表
tup = ('sxsc',12345,'sds',78) ## 元组
2. 列表与元组的不同之处
a. 列表是动态的,长度可变,可以对列表进行删除、改变、添加元素
b. 元组是静态的,长度大小固定,无法增加删减或者改变
3. 列表与元组的存储关系
a. 元组是静态的,一旦确定元组的大小就不可以进行更改,基于元组的这条特性,元组的存储大小一开始就已经确定。
b. 列表是动态的,列表的大小一般会比本身存储的元素的总字节大,因为动态的特性导致了列表中存储了一个指向当前元素的指针,该指针会占用一定的存储空间。动态的特性也会导致列表分配的空间会比当前存储的字节数大。
4. 列表与元组的嵌套
a. 列表嵌套列表,其中的每一个元素都是可变的,相当于二维指针
b. 列表嵌套元组,列表中的元素可变,但是元组元素不可变
输入:
lie = [(1,2,3),(4,5,6),78,'4551']
lie[0] = (1245,45678)
lie
输出:
[(1245, 45678), (4, 5, 6), 78, '4551']
*************************************************
输入:
lie = [(1,2,3),(4,5,6),78,'4551']
lie[0][0] = 23
lie
输出:
TypeError: 'tuple' object does not support item assignment
c. 元组嵌套列表,导致一个元组成为“可变”元组。
输入:
tup =([12,34,56],[78,96],78,'sdsd')
tup[0] = [1234,5678]
tup
输出:
TypeError: 'tuple' object does not support item assignment
********************************************************************************
输入:
tup =([12,34,56],[78,96],78,'sdsd')
tup[0][0]= 124578
tup[0][1]= 369874
tup
输出:
([124578, 369874, 56], [78, 96], 78, 'sdsd')
d. 元组嵌套元组,其中的每一个数据都是不可变的
思考?
创建一个空列表,使用下面的两种方式,哪一个效率更好?
方式一:
empty_list = list()
方式二:
empty_list = []
答案:
方式一是调用函数创建空列表,会出现其他的一系列栈的分配操作
方式二直接调用,[ ] 是一个内置的c函数,更优。