通过以下方式,定义的二维list,当改变一个元素值时,会发现所有行中对应位置的值都被改变
# 定义一个3*4的二维list
d_list = [['0']*4]*3 # 注意行和列对应位置
print(d_list)
# 改变一个元素时
d_list[2][1] = 'w'
print(d_list)
这是因为当时定义的时候d_list的3行是同一个[‘0’]*4的索引,所以一个被改变,其他的都被改变。
所以保险的初始化如下:
d_list = []
for i in range(0,3):
tmp = []
for j in range(0,4):
tmp.append('0')
d_list.append(tmp)
或者使用深拷贝来实现
import copy
d_list = []
a = ['0']*4
for i in range(3):
d_list.append(copy.deepcopy(a))