向三维lis追加元素

2024-09-27 17:48:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我在向三维列表追加新元素时遇到了一个问题。它不是在一个位置(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], []], [[], [], []]]

Tags: 代码in列表forrangeprintappend新元素
1条回答
网友
1楼 · 发布于 2024-09-27 17:48:17

问题是[[]] * 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的情况下,[]被计算一次,包装为[[]],然后进行复制。在

相关问题 更多 >

    热门问题