通过以下方式,定义的二维list,当改变一个元素值时,会发现所有行中对应位置的值都被改变
# 定义一个3*4的二维listd_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 copyd_list = []a = ['0']*4for i in range(3):d_list.append(copy.deepcopy(a))