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

python二维数组创建赋值问题:更改单个值却更改了所有项的值

test_list = []
dic1 = {}
test_list = [dic1 for _ in range(3)]
ll = [1, 2, 3]for i in range(3):test_list[i]['value'] = ll[i]print(test_list)

运行结果:每次赋值都更改了所有项
在这里插入图片描述

原因:python的二位数据创建方式就是这样,官方文档中有描述What has happened is that [[]] is a one-element list containing an empty list,
so all three elements of [[]] * 3 are references to this single empty list.
Modifying any of the elements of lists modifies this single list. You can create a list of different lists this way:

>>> lists = [[] for i in range(3)]
>>> lists[0].append(3)
>>> lists[1].append(5)
>>> lists[2].append(7)
>>> lists
[[3], [5], [7]]

那么,将上述代码修改为:

test_list = []
test_list = [{} for _ in range(3)]
ll = [1, 2, 3]for i in range(3):test_list[i]['value'] = ll[i]print(test_list)

结果正确:
在这里插入图片描述

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

相关文章:

  • 深度模型训练时CPU或GPU的使用model.to(device)
  • SpringBoot3-实现和注册拦截器
  • Ubuntu 22.04源码安装yasm 1.3.0
  • LeetCode [中等]矩阵置零
  • 十一、了解分布式计算
  • 数据结构和算法专题---2、算法思想
  • 在AWS Lambda上部署标准FFmpeg工具——自定义层的方案
  • prometheus服务发现之consul
  • 基于SSM的鞍山职业技术学院图书借阅管理系统
  • 分布式数据库HBase
  • 快捷切换raw页面到repo页面-Raw2Repo插件
  • web:[GXYCTF2019]BabyUpload(文件上传、一句话木马、文件过滤)
  • C++ Div3、Sqrt 函数高性能实现(带汇编指令集)
  • 西南科技大学模拟电子技术实验四(集成运算放大器的线性应用)预习报告
  • 【五分钟】学会利用cv2.resize()函数实现图像缩放
  • vuepress-----18、图片缩放
  • 前端开发_移动Web+动画
  • 【Python】 生成二维码
  • Qt与Sqlite3
  • 在idea中使用maven创建dynamic web project
  • 【外观模式】SpringBoot集成mail发送邮件
  • GUAVA 工具类
  • 高云GW1NSR-4C开发板上手使用
  • androidstudio设置内存
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • flask web学习之flask与http(一)
  • 蓝桥杯日期问题
  • 每天一点python——day90
  • 《巫师3》缺失vcomp110.dll如何解决,如何快速修复vcomp110.dll丢失问题
  • LangChain学习二:提示-实战(上半部分)