Day 7 深copy和浅Copy
dict.fromkeys的用法
1
2
3
4
5
6
7
8
9
10
11
|
#dict.fromkeys的用法 #例子1 dic = 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[:] #实质上是浅copy l3[ 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 31820856 print (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 copy l7 = [ 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 41955816 print (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 { /** * ...
随机推荐
- 10-string类的length()返回值一起的问题
c++ string类length()(size())函数返回值–无符号数 首先,先来发现问题 string s = ""; for(int i = 0; i < s.len ...
- IBM MQ + WebSphere + Spring JMS配置方法
IBM MQ + WebSphere + Spring JMS配置方法 首先要在WAS里面配置IBM MQ作为JMS消息的提供者,在WAS管理控制台: Resources->JMS Provi ...
- Codeforces 679B. Barnicle 模拟
B. Barnicle time limit per test: 1 second memory limit per test :256 megabytes input: standard input ...
- vertical-align和text-align
vertical-align只适用于内联元素. 垂直对齐:vertical-align属性(转) 行高与单行纯文字的垂直居中,而如果行内含有图片和文字,在浏览器内浏览时,读者可以发现文字和图片在垂直方 ...
- 在delphi XE5 里面编译kbmmw4.3
Delphi XE5 仓促的发布了,虽然开始支持Android 开发了,但是经过试用,发现那个模拟器慢到无法用, 真机可以运行,但是调试也几乎无法用.由于XE5 的主要增加的是Android 的开发支 ...
- 2018.07.20 atcoder Largest Smallest Cyclic Shift(贪心)
传送门 题意:给你x个a,y个b,z个c,显然这些字符可以拼成若干字符串,然后求这些字符串中最小表示法表示出来的最大的那一个. 解法:贪心思想,用multiset维护现在拼成的字串,每次取一个最小的和 ...
- Spring boot 出现的时间
Spring 4.0 ~ 4.3 不管商业操作如何,Spring还是继续发展, 2013年12月, Spring4.0 发布,这个版本开始支持JDK8 , 甚至比JDK8 的GA版本还要早3个月! 2 ...
- DataGrid组件
<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx=& ...
- C#和MatLab的混合编程(充分利用二者的优势)
C#和MatLab的混合编程,充分利用了winform的直观显示和matlab的强大计算能力.在此以一个小例子的形式给大家讲述一下二者混合编程的实现. 一.软件的配置说明 C#版本:VS2010:Ma ...
- UVa 11178 Morley's Theorem (几何问题)
题意:给定三角形的三个点,让你求它每个角的三等分线所交的顶点. 析:根据自己的以前的数学知识,应该很容易想到思想,比如D点,就是应该求直线BD和CD的交点, 以前还得自己算,现在计算机帮你算,更方便, ...