操作
定义一个包含5个空字典的数组
错误的定义方式
list = [{}]*5
错误原因
python中使用乘号复制时,只复制了3个索引,即都指向同一个物理地址,我们在操作其中任何一个时,会同时修改其他内容。
image.png
python在用乘号(*)复制时,只会复制索引,不会分配物理地址,在对每个元素赋值时才会分配物理地址,而字典的赋值list[1]['B']=2
直接跳过了对list[1]
的地址分配阶段,因此报错。当我们对list[2]
赋值后,该元素即不受影响。
正确的定义方式
i=0
list=[]
while i<5:
list.append({})
i+=1
网友评论