python - 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]
如您所见,整列都发生了变化。我可以问为什么吗?
解决方案
当你执行
Board= [column] * x
它将生成一个列表,其中所有行(即内部列表)都是同一个对象(x
乘以列表column
),因此当您更新任何这些(相同)列表的任何元素时,您将看到结果x
时间,因为所有行(或您所说的列)完全相同,因为它们是同一对象的实例。
推荐阅读
- ffmpeg - 使用 ffmpeg 在节点 js 服务器中处理 WebRTC RTC 流
- c# - 起订量是否支持“输入”参数?
- python - 在 C 中使用位掩码并将其重写为 Python 3.6
- r - R:从 Sage 期刊的目录中抓取作者姓名
- gstreamer - 通过共享对象库调用 gstreamer
- javascript - Javascript 警报不适用于全局变量
- java - 使用 Spark 和 java 语言的 SQL 查询
- vps - 使用 mail 命令发送电子邮件
- javascript - 黑暗模式在重新加载时闪烁白色背景一毫秒
- java - 是否可以在 java 项目中使用 Che Theia 插件扩展?