python 进阶学习之13
2014-07-26 11:41
323 查看
>>> [id(x) for x in person,hus,wif ]
[3077489356L, 3077491084L, 3077491340L]
>>> hus[0]='j'
>>> wif[0]='s'
>>> hus,wif
(['j', ['savings', 100.0]], ['s', ['savings', 100.0]])
>>> hus[1][1]=50.00
>>> hus,wif
(['j', ['savings', 50.0]], ['s', ['savings', 50.0]])
序列类型对象的浅拷贝是默认类型拷贝,并可以以下几种方式实施:(1)完全切片操作[:],(2)利用工厂函数,比如list(),dict()等,(3)使用copy 模块的copy 函数.
第一个对象是不可变的(是个字符串类型),而第二个是可变的(一个列表).正因为如此,当进行浅拷贝时,字符串被显式的拷贝,并新创建了一个字符串对象,而列
表元素只是把它的引用复制了一下,并不是它的成员.
copy.deepcopy()
>>> h=person
>>> import copy
>>> w=copy.deepcopy(person)
>>> [id(x) for x in person,h,w]
[3077489356L, 3077489356L, 3076713036L]
>>> h[0]='a'
>>> w[0]='q'
>>> h,w
(['a', ['savings', 50.0]], ['q', ['savings', 50.0]])
>>> h[1][1]=20.0
>>> h,w
(['a', ['savings', 20.0]], ['q', ['savings', 50.0]])
第一,非容器类型(比如数字,字符串和其他"原子"类型的对象,像代码,类型和xrange 对象等)没有被拷贝一说,浅拷贝是用完全切片操作来完成的.
第二,如果元组变量只包含原子类型对象,对它的深拷贝将不会进行.如果我们把账户信息改成元组类型,那么即便按我们的要求使用深拷贝操作也只能得到一个浅拷贝:
copy()进行浅拷贝操作,而deepcopy()进行深拷贝操作.
[3077489356L, 3077491084L, 3077491340L]
>>> hus[0]='j'
>>> wif[0]='s'
>>> hus,wif
(['j', ['savings', 100.0]], ['s', ['savings', 100.0]])
>>> hus[1][1]=50.00
>>> hus,wif
(['j', ['savings', 50.0]], ['s', ['savings', 50.0]])
序列类型对象的浅拷贝是默认类型拷贝,并可以以下几种方式实施:(1)完全切片操作[:],(2)利用工厂函数,比如list(),dict()等,(3)使用copy 模块的copy 函数.
第一个对象是不可变的(是个字符串类型),而第二个是可变的(一个列表).正因为如此,当进行浅拷贝时,字符串被显式的拷贝,并新创建了一个字符串对象,而列
表元素只是把它的引用复制了一下,并不是它的成员.
copy.deepcopy()
>>> h=person
>>> import copy
>>> w=copy.deepcopy(person)
>>> [id(x) for x in person,h,w]
[3077489356L, 3077489356L, 3076713036L]
>>> h[0]='a'
>>> w[0]='q'
>>> h,w
(['a', ['savings', 50.0]], ['q', ['savings', 50.0]])
>>> h[1][1]=20.0
>>> h,w
(['a', ['savings', 20.0]], ['q', ['savings', 50.0]])
第一,非容器类型(比如数字,字符串和其他"原子"类型的对象,像代码,类型和xrange 对象等)没有被拷贝一说,浅拷贝是用完全切片操作来完成的.
第二,如果元组变量只包含原子类型对象,对它的深拷贝将不会进行.如果我们把账户信息改成元组类型,那么即便按我们的要求使用深拷贝操作也只能得到一个浅拷贝:
copy()进行浅拷贝操作,而deepcopy()进行深拷贝操作.
相关文章推荐
- ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS
- python学习(13)————jieba进阶生成词云
- python学习手册笔记--第12~13,15章
- [Python入门及进阶笔记00]-写在前面(目录/书籍/学习路线/其他)
- Python 学习入门(13)—— 正则表达式
- python 学习笔记 13 -- 常用的时间模块之time
- python基础教程_学习笔记13:标准库:一些最爱——sys
- Python 学习笔记 - 13.异常(Exception)
- python 进阶学习之4
- python进阶学习笔记(四)--多线程thread
- python apply的一点知识 分类: python基础学习 2013-12-11 13:58 875人阅读 评论(0) 收藏
- python 进阶学习之2
- [Python入门及进阶笔记00]-写在前面(目录/书籍/学习路线/其他)
- python进阶学习笔记(二)
- python进阶学习笔记(一)
- python 调用shell命令三种方法 分类: python基础学习 python Module 2014-01-13 14:13 239人阅读 评论(0) 收藏
- Learn Python The Hard Way学习(13) - 参数,解包,变量
- [Python入门及进阶笔记00]-写在前面(目录/书籍/学习路线/其他)
- python 高手进阶学习资料
- python 学习笔记13-----多线程编程