python空字典列表两种生成方式对赋值带来的不同影响
最近在实现朴素贝叶斯算法碰到一个很有趣的现象(基于Python3.6.3)
我生成一个由10个空字典构成的列表:
第一种生成方式(可能大多数人都会用这种方法,形式简单)
>>a = [{}] * 10
但是在对a里的字典进行赋值时却出现了问题
>>a[3][3] = 32
>>a
[{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32},
{3: 32}]
>>a[4][4] = 5
>>a
[{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5},
{3: 32, 4: 5}]
可以发现对于a[A][B] = y,不管A是什么,这个表达式都会对a里所有的字典进行字段B的增加或者修改
但是用第二种方式(列表生成式)创建
>>a = [{} for i in range(10)]
>>a[3][3] = 32
>>a
[{}, {}, {}, {3: 32}, {}, {}, {}, {}, {}, {}]
>>a[4][4] = 5
>>a
[{}, {}, {}, {3: 32}, {4: 5}, {}, {}, {}, {}, {}]
可以发现对于a[A][B] = y,这个表达式可以单独对a里索引为A的字典进行字段B的增加或者修改
当时就是因为对第一种方式创建出来的空字典列表做这种赋值行为,掉到了坑里。换成第二种问题便解决了
不过至于为什么会有这种区别,我还不清楚。如果有大神知道的,烦请在下面留言。万分感激!!!
python空字典列表两种生成方式对赋值带来的不同影响的更多相关文章
- python将字典列表导出为Excel文件的方法
将如下的字典列表内容导出为Excel表格文件形式: 关于上图字典列表的写入,请参考文章:https://blog.csdn.net/weixin_39082390/article/details/ ...
- Java中serialVersionUID的解释及两种生成方式的区别(转载)
转载自:http://blog.csdn.net/xuanxiaochuan/article/details/25052057 serialVersionUID作用: 序列化时为了保持版 ...
- String的两种生成方式
String的两种生成方式 第一种是双引号法,效率更高 java为String类提供了缓冲池机制,当使用双引号定义对象时,java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用, ...
- UI:字典的两种取值的区别
字典的两种取值的区别 (objectForKey: 和 valueForKey )参考 一般来说 key 可以是任意字符串组合,如果 key 不是以 @ 符号开头,这时候 valueForKey: 等 ...
- day2 编程语言介绍、Python运行程序的两种方式、变量
一 编程语言介绍 1. 机器语言 用计算机能理解的二进制指令直接编写程序,直接控制硬件 2. 汇编语言 用英文标签取代二进制指令编写程序,本质也是直接控制硬件 3. 高级语言 用人能理解的表达方式去编 ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- Python实现屏幕截图的两种方式
Python实现屏幕截图的两种方式 使用windows API 使用PIL中的ImageGrab模块 下面对两者的特点和用法进行详细解释. 一.Python调用windows API实现屏幕截图 好处 ...
- Python 输出百分比的两种方式
Python 输出百分比的两种方式 注: 在python3环境下测试. 方式1:直接使用参数格式化:{:.2%} {:.2%}: 显示小数点后2位 显示小数点后2位: >>> pri ...
- Python 下JSON的两种编解码方式实例解析
概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写.在日常的工作中,应用范围极其广泛.这里就介绍python下它的两种编解码方法: ...
随机推荐
- windows免费?linux免费?赶紧过来看吧
1.今天分享大家一个免费申请linux的网站,可以用来做学习使用! 1.链接地址:https://linuxzoo.net 一次性邮箱:https://temp-mail.org 打开网址申请一个 ...
- java 虚拟机--新生代与老年代GC [转]
原文链接:http://www.360doc.com/content/12/1023/16/9615799_243296263.shtml 1. Java堆中各代分布: 图1:Java堆中各代分布 Y ...
- [dsu on tree]【学习笔记】
十几天前看到zyf2000发过关于这个的题目的Blog, 今天终于去学习了一下 Codeforces原文链接 dsu on tree 简介 我也不清楚dsu是什么的英文缩写... 就像是树上的启发式合 ...
- BZOJ 3550: [ONTAK2010]Vacation [单纯形法]
有3N个数,你需要选出一些数,首先保证任意长度为N的区间中选出的数的个数<=K个,其次要保证选出的数的个数最大. 好像都是费用流... 单纯性裸题呀... 注意每个数最多选1次 #include ...
- Redis服务器启动之后3个警告信息的解决方案
今天是年前最后一篇文章了,不想写太多的东西,就写一些有关Redis相关问题的解决方案.当我们启动了Redis服务器之后,会看到3个警告,如果没看到,那是很好的,但是我看到了.看到了就不能不管,所以就好 ...
- eclipse的maven项目中找不到Maven Dependencies
菜菜的我又来了,笨鸟不一定要先飞,但一定要坚持 今天记录一个初级错误 比如我们在eclipse创建maven项目来运行我们的web项目 搭建完工程后发现javax-servlet包全部报错 到这里我还 ...
- python爬虫登录
python3 urllib.request 网络请求操作 http://www.cnblogs.com/cocoajin/p/3679821.html python实现 爬取twitter用户姓名 ...
- PS图片去色
快捷键:Ctrl+Shift+U 或者:图像-调整-去色
- MYSQL EXPLAIN执行计划命令详解(支持更新中)
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所 ...
- 通过云主机(网关机)远程登录内网mysql
国内的一些云主机平台(UCloud,阿里云,腾讯云等)走的都是网关机+内网机(即局域网)模式,网关机代理外网访问,不能直接连接内网机器.本文介绍通过远程登录云主机,并设置本地代理的方式,通过sqlyo ...