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)代表的是,在内存中开辟多个块,所以不会有引用的问题。

posted @ 2022-08-05 09:41  bH1pJ  阅读(16)  评论(0编辑  收藏  举报