python初始化矩阵相关

做算法题经常需要初始化一个二维的dp数组

下面两种方法是最常用的

python 复制代码
matrix = [[0]*n]*n
matrix = [[0]*n for _ in range(n)]

以前经常混用也没发现什么问题,直到昨天debug的时候发现第一种初始化之后对矩阵进行赋值时混乱的,比如matrix01=2会导致所有行的第二列都变成2。

于是就发现了背后的原因:

第一种初始化方法创建矩阵时使用了相同的子列表对象。在Python中,使用 0 * n 这样的方式创建子列表时,实际上是对相同的子列表对象的引用。因此,当你修改其中一个子列表的元素时,其他子列表也会受到影响。

为了避免这种问题,可以使用列表生成式来创建,也就是第二种方法,确保每个子列表都是独立的对象。

下面这张图就非常清晰易懂啦

网址:pythontutor

相关推荐
Highcharts.js5 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
爱昏羔5 小时前
下篇:从检索到交互 — 物流RAG问答系统与WebUI全实现
python·langchain·agent
_Jimmy_5 小时前
Agent引用数据库知识过时的增量同步方案
人工智能·python·langchain
头发还在的女程序员6 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
min(a,b)7 小时前
学习第 4 天:面向对象与异常处理
python·学习·学习方法
爱写代码的小朋友8 小时前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
yangshicong8 小时前
第19章:AI安全防护与AI安全
人工智能·python·安全·prompt·ai编程
果汁华8 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
c_lb72889 小时前
2026年不同基础做量化,先找AI能参与的位置
人工智能·python
小小晓.9 小时前
C++:语句和作用域
开发语言·c++