python-3.x - Python3 对多维列表的布尔赋值是错误的?
问题描述
尝试在下面做
visited = [[False] * 3]* 3
print(visited)
visited[0][0] = True
print(visited)
为什么会这样打印:
[[False, False, False], [False, False, False], [False, False, False]]
[[True, False, False], [True, False, False], [True, False, False]]
不应该是:
[[False, False, False], [False, False, False], [False, False, False]]
[[True, False, False], [False, False, False], [False, False, False]]
解决方案
使用 创建二维数组
arr = [something * m]*n
时,所有子数组都指向相同的内存位置。如果您修改一个子数组,所有其他子数组都会被修改。
初始化二维矩阵的正确方法是
arr = [[something for i in range(m)] for j in range(n)]
创建一个n x m
矩阵。
推荐阅读
- android - 如何在 Kotlin 登录中添加多个用户?
- python - 绘制图形时出现尺寸错误
- arrays - 我们可以找到线性时间复杂度 O(n) 的数组中每个元素的等级吗?
- javascript - Highcharts 气泡图鼠标悬停破坏动画
- typescript - 使用 Prettier Eslint 时找不到模块“@typescript-eslint/parser”
- python - Dask:在大数据帧上设置索引会导致处理期间的磁盘空间使用率很高
- cypress - Cypress.io - 使用 location.href 将用户重定向到同源会导致跨源错误
- python - 使用 Python 请求自动将文件上传到 Flask 环境
- python - 大熊猫中的奇怪字典
- android - 如何从安卓应用打开通知日志?