python 构建二位数组的两种不同的方式,具有巨大区别
python 构建二位数组的两种不同的方式,具有巨大区别
x=2 z=2
方式1:
Z = [[0]*z]*x
此时对Z的[0][0]元素进行赋值时
Z[0][0]=100
可以看到每个list的第一个元素都是100了;为什么会这样呢?因为*x,是对子list创建了多个引用,而不是在内存中开辟出新的值
方式2:
res = [[0] * z for _ in range(x)]
res[0][0]=100
这里的for _ in range(x)代表的是,在内存中开辟多个块,所以不会有引用的问题。