python中二维数组的初始化

python中二维数组的初始化,python,Python,我知道有很多类似的问题,但我不知道为什么我的代码不起作用。 基本上,我要做的是将2D数组初始化为所有0,获取用户输入(行、列),并将位置设置为1 def printBoard(positions): for row in positions: print(row) def main() x= int(input()) column = [0] * x Board= [column] * x printBoard(Board) fo

我知道有很多类似的问题,但我不知道为什么我的代码不起作用。 基本上,我要做的是将2D数组初始化为所有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]
如您所见,整个列都已更改。我可以问一下为什么吗?

当你执行

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

执行时

Board= [column] * x

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

这是一个混乱:)因为循环是完全不必要的。拆分初始化、询问和设置单个字段以分离函数。祝你的比赛好运!这回答了你的问题吗?这是一团乱:)因为循环是完全没有必要的。拆分初始化、询问和设置单个字段以分离函数。祝你的比赛好运!这回答了你的问题吗?