首页 > 解决方案 > python中二维数组的初始化

问题描述

我知道有很多类似的问题,但我不确定为什么我的代码不起作用。基本上,我要做的是将二维数组初始化为全 0,获取用户输入(行、列),并将位置设置为 1。

def printBoard(positions):
    for row in positions:
        print(row)

def main()
    x= int(input())
    column = [0] * x
    Board= [column] * x
    printBoard(Board)
    for i in range(x):
        row, column = map(int, input().split())
        Board[row][column] = 1
        printBoard(Board)

main()

但是现在的输出是我所期望的。

>>>2 
[0, 0]
[0, 0]
>>>1,1
[0, 1]
[0, 1]

如您所见,整列都发生了变化。我可以问为什么吗?

标签: python

解决方案


当你执行

Board= [column] * x

它将生成一个列表,其中所有行(即内部列表)都是同一个对象(x乘以列表column),因此当您更新任何这些(相同)列表的任何元素时,您将看到结果x时间,因为所有行(或您所说的列)完全相同,因为它们是同一对象的实例。


推荐阅读