Python二维数组的坑:vis = [[0]*m] * n

news/2025/1/15 12:54:59/

先来看,vis = [[0]*m] * n vis2 = [[0]*m for _ in range(n)]有什么区别?

这两行代码都是用来创建二维列表(或矩阵),但它们之间有一个关键的区别在于列表的复制方式。

  • vis = [[0]*m] * n
    这种方式创建了一个包含 n 个相同子列表的列表。也就是说,所有子列表实际上都是同一个列表的引用。如果你修改一个子列表中的元素,其他所有子列表中对应位置的元素也会被修改,因为它们都指向同一个内存位置。

  • vis2 = [[0]*m for _ in range(n)]
    这种方式创建了一个包含 n 个独立子列表的列表。通过列表推导式的方式,每个子列表都是通过 [0]*m 创建的,因此它们在内存中是不同的,互相之间没有关联。

下面是一个例子来说明这两种方式的区别:

n = 3
m = 4vis = [[0]*m] * n
vis2 = [[0]*m for _ in range(n)]vis[0][0] = 1
vis2[0][0] = 1print(vis)
print(vis2)

输出结果
在这里插入图片描述
可以看到,在第一种方式中,修改一个子列表的元素会影响到其他所有子列表,而在第二种方式中,每个子列表是独立的,修改一个子列表不会影响其他子列表。通常情况下,建议使用第二种方式来创建独立的二维列表。


http://www.ppmy.cn/news/1006996.html

相关文章

【C++】类的隐式转换和explicit抑制类的隐式转换

2023年8月5日,周六下午 今天在网上找了很久都没找到有精确定义了类的隐式转换条件的资料,最后是在权威书籍《C Primer(第5版)》里面找到的。 说真的,虽然我认为《C Primer(第5版)》不适合作为…

开放式蓝牙耳机哪个品牌好用?盘点几款很不错的开放式耳机

​相比传统入耳式耳机,开放式耳机因其不入耳不伤耳的开放设计,不仅带来了舒适的佩戴体验,还创造了一种与周围环境互动的全新方式,户外运动过程时也无需担心发生事故,安全性更高。我整理了几款比较好用的开放式耳机给大…

re学习(28)攻防世界 parallel-comparator-200(线程函数)

下载出来是个C语言编辑文件&#xff0c;添加注释如下所示&#xff1a; #include <stdlib.h> #include <stdio.h> #include <pthread.h> //linux的线程库&#xff0c;所以要在linux中才可运行 #define FLAG_LEN 20void * checking(void *arg) { //这道题…

【Python从入门到进阶】31、使用JSONPath解析淘票票网站地区接口数据

接上篇《30、JSONPath的介绍和使用》 上一篇我们介绍了JSONPath的基础和具体使用&#xff0c;本篇我们来具体使用JSONPath&#xff0c;来解析淘票票网站的地区接口数据。 一、引言 1、JsonPath的作用和用途&#xff1f; JsonPath是一种用于在JSON数据中进行查询和提取的表达…

PADS过孔操作

过孔须先在Layout内设置好类型&#xff0c;然后在“过孔配置”选项页将使用的过孔勾选。 2&#xff09;有多个过孔类型&#xff0c;可以先指定当前设计时使用的过孔类型。布线操作期间&#xff0c;右击在“过孔类型”选项内选择“通孔类过孔”或者“自动类过孔”&#xff0c;选…

Mybatis:一对一查询映射处理

Mybatis&#xff1a;一对一查询映射处理 前言一、概述二、创建数据模型三、 问题四、解决方案1、方案一&#xff1a;级联方式处理映射关系2、方案二&#xff1a;使用association处理映射关系3、方案三&#xff1a;分步查询 前言 本博主将用CSDN记录软件开发求学之路上亲身所得…

Ceph入门到精通-远程开发Windows下使用SSH密钥实现免密登陆Linux服务器

工具&#xff1a; win10、WinSCP 服务器生成ssh密钥&#xff1a; 打开终端&#xff0c;使账号密码登录&#xff0c;输入命令 ssh-keygen -t rsa Winscp下载 Downloading WinSCP-6.1.1-Setup.exe :: WinSCP window 生成密钥 打开powershell ssh-keygen -t rsa 注意路径 …

【CSS】旋转中的视差效果

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…