python模块之copy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python模块之copy相关的知识,希望对你有一定的参考价值。

提供浅拷贝和深拷贝两种模式。

 

=>copy(x):返回x的浅拷贝

=>deepcopy(x):返回x的深拷贝

 

浅拷贝和深拷贝:

浅拷贝复制不变对象,引用可变对象(如列表和字典);

深拷贝复制可变和不可变对象。

 

浅拷贝的几种方法:

(1)、使用切片[:]操作进行拷贝

(2)、使用工厂函数(如list/dir/set)等进行拷贝

(3)、copy.copy()

 

Example:

 

#深拷贝浅拷贝

import copy

person = [1,2,4,[‘a‘,‘b‘]]

b = person  #对象的赋值实际上是对象的引用

c=person[:]

d=copy.copy(person)

e=copy.deepcopy(person)

 

person.append(‘hello‘)

b[3].insert(1,‘bbb‘)

b.insert(1,‘bbb‘)

c.insert(1,‘ccc‘)

c[4].insert(1,‘ccc‘)

d.insert(1,‘ddd‘)

e.insert(1,‘test‘)

 

print(‘原始数据person:\t‘,person)

print(‘赋值b:\t‘,b)

print(‘浅拷贝c:\t‘,c)

print(‘浅拷贝d:\t‘,d)

print(‘深拷贝e:\t‘,e)

 

原始数据person:  [1, ‘bbb‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘], ‘hello‘]

赋值b:  [1, ‘bbb‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘], ‘hello‘]

浅拷贝c:  [1, ‘ccc‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘]]

浅拷贝d:  [1, ‘ddd‘, 2, 4, [‘a‘, ‘ccc‘, ‘bbb‘, ‘b‘]]

深拷贝e:  [1, ‘test‘, 2, 4, [‘a‘, ‘b‘]]

以上是关于python模块之copy的主要内容,如果未能解决你的问题,请参考以下文章

PYTHON之模块

Python 之 模块初识

Python模块之目录

Python基础(11)_python模块之time模块rando模块hashlibos模块

python模块基础之getpass模块

Python/模块与包之模块