首页 > 解决方案 > (Python) For 循环会影响数组的所有子数组,尽管只引用了第一个子数组 - 如何避免这种情况

问题描述

我正在编写一个函数,它通过一个二维的零列表(例如 5x5)并将其中一些标记为 1。它遵循一种模式,并且可以在两者之间改变方向。这是代码的一些片段下面的 4 行是相关的,上面的其余部分仅用于上下文)

def spiralize(size):
    spiral = [[0]*size]*size
    j = size -1
    steps = [j]

    while j > 0:
        steps.append(j)
        steps.append(j)
        j -= 2
    if size%2 != 0: steps.append(1)
    
    direction = "right"
    pointer = [0,0]
    
    for i in steps:       
        if direction == "right":
            for k in range(0,i):
                spiral[pointer[0]][pointer[1]] = 1
                pointer[1] += 1

我希望在第二个 for 循环之后,一个 5x5 数组看起来像这样:

[[1,1,1,1,0],
 [0,0,0,0,0],
 [0,0,0,0,0],
 [0,0,0,0,0],
 [0,0,0,0,0]])

但是,它看起来像这样:

[[1,1,1,1,0],
 [1,1,1,1,0],
 [1,1,1,1,0],
 [1,1,1,1,0],
 [1,1,1,1,0]])

我找不到原因,为什么所有其他子数组都以同样的方式受到影响。在整个循环中指针[0] = 0。数据结构有什么我不知道的吗?

非常感谢你提前。

标签: pythonlistfor-loop

解决方案


推荐阅读