假设我列出了3D列表
list = [[[0, 0], [0, 0]], [[0, 0], [0, 0]]]
我跑
list[0][0][0] = 1 #set the first element of the first list of the first list to 1
print(list)
我希望得到
[[[1, 0], [0, 0]], [[0, 0], [0, 0]]]
但是我得到了
[[[1, 0], [1, 0]], [[1, 0], [1, 0]]]
有人能弄清楚如何使它为3D列表的仅一个元素而不是每个第一个元素分配变量吗?谢谢!
如果有关系,我正在使用32位Python 3.7。
答案 0 :(得分:0)
我通过假设您实际定义列表的方式来复制您的结果。我假设您在下面定义了一些变量,例如ab
,并用它来创建列表。但是,新列表仍然是对您的ab
变量的一堆引用,因此更改一个实际上会更改ab
,这会影响您的整个列表。
ab = [0,0]
mylist = [[ab,ab],[ab,ab]]
mylist[0][0][0] = 1
print(mylist," ",ab)
输出
[[[1, 0], [1, 0]], [[1, 0], [1, 0]]] [1, 0]
要解决此问题,请使用0
而不是某些变量来简单地初始化列表:
mylist = [[[0,0],[0,0]],[[0,0],[0,0]]]
或
mylist = [[[0 for _ in range(2)] for _ in range(2)] for _ in range(2)]