python身份危机为什么l或x复制0而不产生新的0

标签 python python-3.x

def create_octahedron(size):
  l = [0]
  y = []
  z = []
  if size % 2 == 0 or size <= 1:
    return x

  for i in range(size - 1):      
    l += [0]
  x = l[:]
  for i in range(size):
    y += [x[:]]
  for i in range(size):
    z += [y[:]]

  for i in range(size):

    for u in range(size):

        for v in range(size):

          if i == len(z)//2:
            if u == len(y)//2:
                if v == len(x)//2:
                    z[i][u][v] = 1




print(z)

我发布了一个与此类似的问题,现在我试图找出为什么仍然有 1 的重复实例。 [[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0 , 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0 , 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0], [0, 0 , 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0 , 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0 , 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1 , 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0 , 0, 0]], [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0 , 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0 , 0], [0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0 , 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]], [[0, 0, 0, 0, 0, 0, 0 ], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]] 这是我的输出。应该是 1 而不是 7。我知道问题出在哪里,我知道问题是什么,只是不知道为什么会这样或如何从这里解决它。我什至不关心修复它,因为我知道为什么我尝试的方法不起作用。

最佳答案

您遇到的问题是由于列表的构 build 成的。由于您通过将列表添加到其他列表来创建列表,因此在多种情况下,单个列表会指向列表的另一部分。因此,当您编辑列表的一部分时,它会更改指向它的其他部分。

我能够通过复制您的代码并手动更改 z[1][1][1] 来解决这个问题。当我更改列表中的此位置时,它更改了整个列表。

解决方案:

我建议使用上述评论者代码或停止重复添加列表到列表。

关于python身份危机为什么l或x复制0而不产生新的0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53568768/

相关文章:

python - 如何知道哪些协程已通过 asyncio.wait() 完成

python - 在 mailx 中将 s3 文件作为附件发送

Python,特征选择

Python "ImportError: No module named...",但模块存在

python - django 的循环问题

python - 没有名为 "file1.py"的模块; test1 不是一个包

python - 在 Python 中运行 Theil-Sen 回归时出错

python - 在 Python 中模拟模拟对象的方法?

python - Fdist 和前 10 个功能词

Django Admin CSS 文件丢失