python中二维数组的初始化
我知道有很多类似的问题,但我不知道为什么我的代码不起作用。 基本上,我要做的是将2D数组初始化为所有0,获取用户输入(行、列),并将位置设置为1python中二维数组的初始化,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
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
次的结果,因为所有行(或您称之为列)都完全相同,因为它们是同一对象的实例。这是一个混乱:)因为循环是完全不必要的。拆分初始化、询问和设置单个字段以分离函数。祝你的比赛好运!这回答了你的问题吗?这是一团乱:)因为循环是完全没有必要的。拆分初始化、询问和设置单个字段以分离函数。祝你的比赛好运!这回答了你的问题吗?