将元素附加到三维列表

时间:2016-01-21 11:59:47

标签: python python-3.x

我在将新元素附加到三维列表时遇到问题。它不是在一个地方追加新元素(Github),而是将其附加到整行(threeDimList[1][1]threeDimList[1][0]threeDimList[1][1])这是我的代码:

threeDimList[1][2]

给了我:

threeDimList = [[[]]*(3) for i in range(3)]
threeDimList[1][1].append(1)
print(threeDimList)

而不是:

[[[], [], []], [[1], [1], [1]], [[], [], []]]

1 个答案:

答案 0 :(得分:5)

问题在于[[]] * 3基本上创建了一个包含对同一[]的三个引用的列表。

您可以执行以下操作:

>>> a = [[] for i in range(3)]
>>> a[0].append(1)
>>> a
[[1], [], []]
>>> b = [[]] * 3
>>> b[0].append(2)
>>> b
[[2], [2], [2]]

a情况下,给定列表理解,[]被评估三次,因此每次评估都会在内存中获得一个新的空列表对象。

b案例中,[]评估一次,包装为[[]],然后复制。