我在向三维列表追加新元素时遇到了一个问题。它不是在一个位置(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)
这给了我:
^{pr2}$而不是:
[[[], [], []], [[], [1], []], [[], [], []]]
问题是
[[]] * 3
基本上创建了一个包含对同一个[]
的三个引用的列表。在你可以这样做:
在
a
的情况下,给定列表理解,[]
将被计算三次,因此每次求值都会在内存中获得一个新的空列表对象。在在
b
的情况下,[]
被计算一次,包装为[[]]
,然后进行复制。在相关问题 更多 >
编程相关推荐