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下它的两种编解码方法: ...
随机推荐
- python监控接口请求
#!/usr/bin/env python #coding=utf8 import time,os,sched,urllib,httplib import smtplib import string ...
- Hive on ES
ES对于类似数据库的SQL查询很无力,可以使用Hive on ES来实现SQL的查询.2个百万级的索引做关联时,需要大概1分多钟,基于es2.1版本. 1.将elasticsearch-hadoop- ...
- Animation Physics and The Realization Of Animation In Browsers
Animation Physics Background With the development of computer science technology, people are facing ...
- shell的if嵌套
shell脚本编写中,if是可以嵌套的, 注意,if条件表达式[]中的空格,以及后面的then就行了 if条件表达式后面的分号":"可有可无,不影响. 代码如下 myFile='c ...
- [记]Debian alias 设置, 不设置貌似有点不方便习惯
备忘录,记录下. 不知道 当前有那些 alias 的话 直接输入 alias ,回车就可以看到 alias 列表. 终端输入: vim ~/bash_aliases 然后输入: # some more ...
- [记录]Python2.7使用argparse模块
# -*- coding: utf8 -*- import argparse #ArgumentParser.add_argument(name or flags-[, action][, nargs ...
- java11 - GUI图形用户界面编程
一.JavaSwing界面设计参考教程 二.布局管理器 三.绝对布局 import java.awt.Color; import java.awt.event.ActionEvent; import ...
- SmileyFace——基于OpenCV的人脸人眼检测、面部识别程序
项目地址 https://github.com/guoyaohua/SmileyFace 开发环境 Visual Studio 2010 MFC + OpenCV 功能描述 静态图像人脸检测 视频人脸 ...
- Node.js,commonjs,require
环境: Node应用由模块组成,采用CommonJS模块规范. node的全局对象是global,没有window这个对象. process表示当前执行的进程,挂在global之下. CommonJS ...
- ACM==迷茫
写给迷茫的自己~~ 从家里来学校一周多了,没做几个题,也没学习新的算法,就这样迷茫地无所事事.有时我就在想我是不是真的喜欢算法?曾经自己定下的竞赛目标要置之不理吗? 我高中毕业于一个普通高中,在上大学 ...