python初始化矩阵相关

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

下面两种方法是最常用的

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

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

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

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

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

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

网址:pythontutor

相关推荐
星辰徐哥6 分钟前
Java程序的编译与运行机制
java·开发语言·编译·运行机制
deephub8 分钟前
为什么标准化要用均值0和方差1?
人工智能·python·机器学习·标准化
Sylvia-girl9 分钟前
线程安全问题
java·开发语言·安全
CC.GG10 分钟前
【C++】C++11----智能指针
开发语言·c++
hnxaoli13 分钟前
win10程序(十五)归档文件的xlsx目录自动分卷
python
沛沛老爹17 分钟前
Web开发者转型AI安全实战:Agent Skills敏感数据脱敏架构设计
java·开发语言·人工智能·安全·rag·skills
曹轲恒18 分钟前
Java并发包atomic原子操作类
java·开发语言
cyforkk22 分钟前
03、Java 基础硬核复习:流程控制语句的核心逻辑与面试考点
java·开发语言·面试
喵手23 分钟前
Python爬虫零基础入门【第九章:实战项目教学·第8节】限速器进阶:令牌桶 + 动态降速(429/5xx)!
爬虫·python·令牌桶·python爬虫工程化实战·python爬虫零基础入门·限速器·动态降速
星火开发设计24 分钟前
const 指针与指针 const:分清常量指针与指针常量
开发语言·c++·学习·算法·指针·const·知识