python初始化矩阵相关

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

下面两种方法是最常用的

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

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

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

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

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

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

网址:pythontutor

相关推荐
会博通·代码搬运工4 分钟前
会博通API对接实战:工程企业文档分布式采集系统的技术实现与Python SDK详解
开发语言·分布式·python·线性代数·矩阵·架构·电子档案合规
空堂与归10 分钟前
大模型再火,也得先过 class 这一关
python
Muselit11 分钟前
Python 泛型:把 list[User] 讲明白
python·fastapi
2501_9160074717 分钟前
Python实现HTTPS爬虫的完整指南:使用requests、BeautifulSoup、Selenium和Scrapy
爬虫·python·ios·小程序·https·uni-app·iphone
林森lsjs23 分钟前
完结撒花!Java SE 语法阶段总结!
java·开发语言
lupai23 分钟前
短信接口快速接入与调用实战指南
java·开发语言·数据库
gptAI_plus25 分钟前
别把整个仓库塞给 AI:用 Python 生成安全的代码上下文清单
python·chatgpt
吃饱了得干活26 分钟前
Agent 记忆系统:从短期记忆到长期记忆
python·langchain·agent
刘名喜30 分钟前
第12篇-Gradle-Kotlin-DSL构建指南
开发语言·kotlin·springboot
大鱼>42 分钟前
DSPy:LLM程序自动编译与提示词优化
开发语言·人工智能·python·深度学习