当前位置: 首页 > news >正文

python初始化矩阵相关

做算法题经常需要初始化一个二维的dp数组
下面两种方法是最常用的

matrix = [[0]*n]*n
matrix = [[0]*n for _ in range(n)]

以前经常混用也没发现什么问题,直到昨天debug的时候发现第一种初始化之后对矩阵进行赋值时混乱的,比如matrix[0][1]=2会导致所有行的第二列都变成2。
于是就发现了背后的原因:
第一种初始化方法创建矩阵时使用了相同的子列表对象。在Python中,使用 [0] * n 这样的方式创建子列表时,实际上是对相同的子列表对象的引用。因此,当你修改其中一个子列表的元素时,其他子列表也会受到影响。
为了避免这种问题,可以使用列表生成式来创建,也就是第二种方法,确保每个子列表都是独立的对象。

下面这张图就非常清晰易懂啦
网址:pythontutor
在这里插入图片描述

http://www.lryc.cn/news/251349.html

相关文章:

  • C++ :运算符重载
  • 如何跑通跨窗口渲染:multipleWindow3dScene
  • flutter-web中使用js工具类
  • @ResponseBody详解:用于响应体响应数据
  • 【Python百练——第3练】矩形类及操作
  • 【C语言学习疑难杂症】C语言中数组存储时为什么从低地址到高地址
  • Linux:查看端口占用的进程
  • 医美店会员管理系统预约小程序作用是什么
  • Linux 正则表达式
  • C语言面试之数组指针上篇
  • LinkWeChat,唯一以开源为核心的SCRM
  • Android textView 显示: STRING_TOO_LARGE
  • 用HeidiSQL在MySQL中创建新的数据库
  • 纯前端实现导入excel数据
  • Matlab下载许可证文件 教程(在账号有许可证的前提下)
  • AI 绘画 | Stable Diffusion 电商模特
  • vue面试题整理(1.0)
  • PyQt基础_007_ 按钮类控件QCombox
  • Android Wifi的扫描机制
  • 类 —— 友元、常/静态成员函数
  • 单页面应用
  • 六、ZooKeeper Java API操作
  • 美甲美睫店预约会员管理小程序作用如何
  • Vue3为什么会推出组合式API
  • windows11 phpstudy_pro php8.2 安装redis扩展
  • 中英双语大模型ChatGLM论文阅读笔记
  • 力扣题:字符串的反转-11.24
  • NIO--07--Java lO模型详解
  • OpenSSH 漏洞修复升级最新版本
  • 【数据结构和算法】无限集中的最小数字