python初始化矩阵相关

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

下面两种方法是最常用的

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

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

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

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

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

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

网址:pythontutor

相关推荐
赵优秀一一12 小时前
SQLAlchemy学习记录
开发语言·数据库·python
m0_6403093012 小时前
如何在phpMyAdmin中生成XML格式导出_与其他企业系统的数据交互
jvm·数据库·python
无限进步_12 小时前
【C++】寻找字符串中第一个只出现一次的字符
开发语言·c++·ide·windows·git·github·visual studio
2301_8152795212 小时前
JavaScript中快速清空数组的多种方式及其性能差异
jvm·数据库·python
孬甭_13 小时前
字符函数及字符串函数
c语言·开发语言
捉鸭子13 小时前
海关总署瑞数vmp算法还原
python·网络安全·node.js·网络爬虫
摇滚侠13 小时前
Java 进阶教程,全面剖析 Java 多线程编程
java·开发语言
大佬,救命!!!13 小时前
etp中未运行用例顺序的定位及补齐脚本自动化生成
python·学习笔记·excel·自动化脚本·用例整理清洗
KevinCyao13 小时前
php彩信接口代码示例:PHP使用cURL调用彩信网关发送图文消息
android·开发语言·php
装疯迷窍_A13 小时前
以举证方位线生成工具为例,分享如何在Arcgis中创建Python工具箱(含源码)
开发语言·python·arcgis·变更调查·举证照片