起因是做题,洛谷的 P5729 【深基5.例7】工艺品制作
。想法中用到了三维数组,一下没想到numpy,就用的list。众所周知,list可以嵌套,形成二维list,所以我想用list做三维list。但测试后发现不对。
遇到问题的代码:
w = 3
x = 3
h = 3
m = []
y = []
a = []
for k in range(h):
m.append(1)
for j in range(x):
y.append(m)
for i in range(w):
a.append(y)
# 此之前为创建了一个我想象中的三维list、
# a[1][1][1] 的值是 1 ,我想改他为2, 本想改后应该是全部为1,他单一一个为2。结果改完之后发现整列都成了2
print('a = {}'.format(a))
print('a[1] ={}'.format(a[1]))
print('a[1][1] = {}'.format(a[1][1]))
print('a[1][1][1] = {}'.format(a[1][1][1]))
a[1][1][1] = 2
print('a{}'.format(a))
输出:
a = [[[1, 1, 1], [1, 1, 1], [1, 1, 1]], [[1, 1, 1], [1, 1, 1], [1, 1, 1]], [[1, 1, 1], [1, 1, 1], [1, 1, 1]]]
a[1] =[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
a[1][1] = [1, 1, 1]
a[1][1][1] = 1
#在此处进行了修改,a[1][1][1] = 2
a[[[1, 2, 1], [1, 2, 1], [1, 2, 1]], [[1, 2, 1], [1, 2, 1], [1, 2, 1]], [[1, 2, 1], [1, 2, 1], [1, 2, 1]]]
问题描述:本认为修改后只改一个值,结果改了一大堆。很懵逼 为什么。请教一下各位大神,感谢