最近在实现朴素贝叶斯算法碰到一个很有趣的现象(基于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空字典列表两种生成方式对赋值带来的不同影响的更多相关文章

  1. python将字典列表导出为Excel文件的方法

    将如下的字典列表内容导出为Excel表格文件形式: ​ 关于上图字典列表的写入,请参考文章:https://blog.csdn.net/weixin_39082390/article/details/ ...

  2. Java中serialVersionUID的解释及两种生成方式的区别(转载)

    转载自:http://blog.csdn.net/xuanxiaochuan/article/details/25052057 serialVersionUID作用:        序列化时为了保持版 ...

  3. String的两种生成方式

    String的两种生成方式 第一种是双引号法,效率更高 java为String类提供了缓冲池机制,当使用双引号定义对象时,java环境首先去字符串缓冲池寻找相同内容的字符串,如果存在就直接拿出来应用, ...

  4. UI:字典的两种取值的区别

    字典的两种取值的区别 (objectForKey: 和 valueForKey )参考 一般来说 key 可以是任意字符串组合,如果 key 不是以 @ 符号开头,这时候 valueForKey: 等 ...

  5. day2 编程语言介绍、Python运行程序的两种方式、变量

    一 编程语言介绍 1. 机器语言 用计算机能理解的二进制指令直接编写程序,直接控制硬件 2. 汇编语言 用英文标签取代二进制指令编写程序,本质也是直接控制硬件 3. 高级语言 用人能理解的表达方式去编 ...

  6. 用Python计算幂的两种方法,非递归和递归法

    用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...

  7. Python实现屏幕截图的两种方式

    Python实现屏幕截图的两种方式 使用windows API 使用PIL中的ImageGrab模块 下面对两者的特点和用法进行详细解释. 一.Python调用windows API实现屏幕截图 好处 ...

  8. Python 输出百分比的两种方式

    Python 输出百分比的两种方式 注: 在python3环境下测试. 方式1:直接使用参数格式化:{:.2%} {:.2%}: 显示小数点后2位 显示小数点后2位: >>> pri ...

  9. Python 下JSON的两种编解码方式实例解析

    概念   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写.在日常的工作中,应用范围极其广泛.这里就介绍python下它的两种编解码方法: ...

随机推荐

  1. centos6.8 安装gitlab记录

    sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sud ...

  2. 51NOD 1705 七星剑 [DP 期望的线性性质]

    传送门 题意: 七颗星,第$i$课星用第$j$个宝石有$p[i][j]$的概率成功,失败将为$g[i][j]$颗星: 第$j$个宝石化费$c[j]$ 求最小期望化费 $MD$本来自己思路挺对的看了半天 ...

  3. Eclipse多平台编译(armeabi, armeabi-v7a, x86, mips)

    Jni目录下新增Application.mk,加入 APP_ABI := armeabi armeabi-v7a x86 mips 上面的平台可加可减,全编的话可以写为 APP_ABI := all ...

  4. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

  5. 分享一下自己写的一个vscode-leetcode答题插件

    0. 前言 春节这几天每天吃吃喝喝睡睡玩玩,突然发现明天就要上班了,吓得我虎躯一震. 春节结束之后,学生党们陆续开学,相信有许多同学马上就要在春季招聘中拼杀一番.想要收获心意的offer,当然免不了对 ...

  6. jq实现碰到边缘反弹的动画

    先上效果图: 录出来有点卡顿的赶脚,实际上还是挺顺畅的. 1.HTML: <div class="box"></div> 2.CSS: body{ back ...

  7. 微信小程序 sha1 实现密码加密

    在utils中的util.js 文件中增加 函数 实现 字符串转换为16进制加密后的字符串 function encodeUTF8(s) { var i, r = [], c, x; for (i = ...

  8. Spring实现无需注解实现自动注入

    xml配置 过程:设置自动装配的包-->使用include-filter过滤type选择为regex为正则表达式-->expression是表达是式也就是限制条件 <?xml ver ...

  9. 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)

    本节开始学习 Service.我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会通 ...

  10. 老男孩Python全栈开发(92天全)视频教程 自学笔记18

    day18课程内容: os模块 import osprint(os.getcwd())#D:\untitled\练习题 获取当前工作目录os.chdir(r'D:\untitled\练习题\16.1切 ...