python初始化矩阵相关

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

下面两种方法是最常用的

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

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

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

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

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

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

网址:pythontutor

相关推荐
Gigavision10 小时前
基于BUAA-MIHR数据集的噪声解耦对比学习算法
人工智能·python·深度学习·算法
IPdodo_10 小时前
跨境 API 调用不稳定怎么办:出口、超时重试与链路监控的实践
网络·python·网络协议
aramae10 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
Madison-No711 小时前
搭建项目测试环境
linux·运维·服务器·python
计算机编程-吉哥11 小时前
YOLO26 vs YOLO11 vs YOLOv8:深度学习咖啡果实成熟度分割系统【计算机毕业设计选题推荐】
人工智能·python·深度学习·yolo·django·毕业设计
泡海椒12 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
大衛說12 小时前
11 · 异常处理与日志
python
auto_go12 小时前
Python 实战指南(7)——账本动不动就崩?先把“魔法字符串”和“裸报错”干掉
python
Beyond_System|系统之外12 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
根目录下的猫13 小时前
RK3588适配的轻量级AI模型推荐
人工智能·后端·python·目标检测