Day 7 深copy和浅Copy
dict.fromkeys的用法
|
1
2
3
4
5
6
7
8
9
10
11
|
#dict.fromkeys的用法#例子1dic = dict.fromkeys([1,2,3],[])print(dic) #{1: [], 2: [], 3: []}dic[2].append('alex') #{1: ['alex'], 2: ['alex'], 3: ['alex']}print(dic)#例子二dic1 = dict.fromkeys(['Q','w'],['a','b'])print(dic1) #{'Q': ['a', 'b'], 'w': ['a', 'b']}dic1['w'].append('d')print(dic1) #{'Q': ['a', 'b', 'd'], 'w': ['a', 'b', 'd']} |
浅copy和深copy
浅copy的引入:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
引入浅copy#只是第一层的列表变化l1 = [1,2,3]l2 = l1[:]l1.append(123)print(l1) #[1, 2, 3, 123]print(l2) #[1, 2, 3]#第二层列表改变l3 = [1,[2,3],4]l4 = l3[:] #实质上是浅copyl3[1].append(666)print(l3) #[1, [2, 3, 666], 4]print(l4) #[1, [2, 3, 666], 4] |
浅copy:
|
1
2
3
4
5
6
7
|
#浅copy#对于浅copy来说,第一层都是独立的内存地址,从第二层开始都是指向同一个内存地址,一变全都变。l5 = [9,8,[7,6],5]l6 = l5.copy()l5[2].append(888)print(l5,id(l5),id(l5[2])) #[9, 8, [7, 6, 888], 5] 31820816 31820856print(l6,id(l6),id(l6[2])) #[9, 8, [7, 6, 888], 5] 31819336 31820856 |
深copy:
|
1
2
3
4
5
6
7
8
|
#深copy#对于深copy来说,无论多少层,在内存中,都是两个独立的内存地址。import copyl7 = [9,8,[7,6],5]l8 = copy.deepcopy(l7)l7[2].append(888)print(l7,id(l7),id(l7[2])) #[9, 8, [7, 6, 888], 5] 41955896 41955816print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6 ], 5] 41957976 41957936
|
Day 7 深copy和浅Copy的更多相关文章
- (五)聊一聊深Copy与浅Copy
一.关于浅copy与深copy 首先说明一下: 在python中,赋值其实就是对象的引用,变量就是对象的一个标签,如果把内存对象比喻成一个个房间,那么变量就是门牌号. 深copy与浅copy只是针对可 ...
- Python的深copy和浅copy
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象. 浅copy: a = [1, 2, ...
- 列表的使用2,深COPY和浅COPY,循环列表,步长切片
name2=names.copy() 下面我看几种奇怪的现象: 首先把源列表copy以后,把源列表第2个数值修改.那么没毛病. 如果源列表里,还包含了一个子列表:这也没毛病 如果我们这个时候修改子列表 ...
- 深copy和浅copy
浅copy:其实就是将容器中的内存地址存放进另一个容器中,所以两个容器本身的内存地址不相同,但容器里面的内存地址相同 代码如下: 深copy:就是从里到外完完全全复制了所有值,存进另外的内存空间,并赋 ...
- python中深copy,浅copy与赋值语句的区别
以下详细讲解:python深复制,浅复制与赋值语句的区别 1. '='赋值语句,常规复制只是将另一个变量名关联到了列表,并不进行副本复制,实例如下: var1=[12,35,67,91,101]var ...
- C/C++深度copy和浅copy
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string. ...
- 深浅copy和浅copy
深浅copy 1,先看赋值运算. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 print(l1) # [111, 2, 3, ['barry', ...
- python中深copy,浅copy
版权声明:本文为博主原创文章,未经博主允许不得转载. >>> mylist1 = [1, 2, 3, 4] >>> myl = mylist1 >>&g ...
- PHP的深copy和浅copy
1.对象复制的由来 为什么对象会有“复制”这个概念,这与PHP5中对象的传值方式是密切相关的,让我们看看下面这段简单的代码 /** * 电视机类 */ class Television { /** * ...
随机推荐
- C#以记事本(指定程序)打开外部文档(指定文档)
System.Diagnostics.Process.Start("notepad.exe", "D:\\a.txt");
- Linux安装和配置Vim7.4
一.简介 Vim是一个类似于Vi的文本编辑器,不过在Vi的基础上增加了很多新的特性,Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体.1999 年Emacs被选为L ...
- HDFS高可用性及其分布式系统思想基础
源自单点失效问题,也就是当NameNode不可用的时候,用什么办法可以平滑过渡? 最直接的办法是再添加一个备用的NN,这就产生了Active NameNode和Standby NameNode的设计思 ...
- 关于UI设计的一些工作了解
关于UI设计相信大家在刚接触UI的时候都不太了解,我来说说我在一段学习时间后的了解. UI从工作内容上来说分为3大类,即研究工具,研究人与界面的关系,研究人与之相应. UI设计师的职能一个是图形设 ...
- Debian 采用 iso 镜像作为 apt 源
1.将N个debian-506-amd64-DVD-N.iso存放于本地或其他媒介内,本例是放在本机/iso/目录下2.创建N个挂载点目录 如下: debian:~#mkdir –r /media/d ...
- AJAX 请求中多出了一次 OPTIONS 请求 导致 Laravel 中间件无法对 Header 传入的 Token 无法获取
背景知识: 我们会发现,在很多post,put,delete等请求之前,会有一次options请求.本文主要是来讨论一下这是什么原因引起的. 根本原因就是,W3C规范这样要求了!在跨域请求中,分为简单 ...
- Windows10 Virtualization Technology虚拟化技术功能
为什么要开启VT功能,做机器学习环境搭建.运用Docker容器等等,所以首先要确认一下机器是否已经开启了VT技术功能,以此记录一下经历而已. VT是什么?为什么要开启VT?VT是一种虚拟化技术,可以扩 ...
- 关于使用smsx.cab控件做web打印使用方法(转)
注意:在使用之前先告诉下我的痛苦经历 在做WEB项目是我的JSP页面在jsp文件夹里,我把smsx.cab放在js文件夹里(jsp和js是用级别目录) 在本机上测试可以正确下载控件,但是部署到测试服务 ...
- [转载红鱼儿]Delphi XE7 update1进步太大了
写以下的文字是怀着无比兴奋的心情写的,急于同朋友们分享XE7的进步! 1.更新的bug列表并不全 通过bug修正列表及发布的消息,可以看到up1修正了很多bug,正如我所说,有些bug并没有写到发布的 ...
- IntelliJ IDEA 2017版 spring-boot 实现jpa基本部署,通过实体类自动建立数据库
一.添加Spring Boot JPA-Hibernate步骤 1.在pom.xml添加mysql,spring-data-jpa依赖 2.在application.properties文件 ...