如何复制对象

如何复制对象

在python中很多时候需要复制对象,比如有一个列表记录了一些对象,现在想复制一份出来,如果这样使用肯定是不行的:a = [1, 2, 3]; b = a,给a初始化一些值,然后让b和a引用同样的对象,这样使用会使得a和b都可以改变引用的对象,不能满足复制的要求。

有的人说了,可以使用列表自带的copy方法,这样就可以复制一个同样的列表了,是的,但是列表自带的copy方法是一个浅层复制,浅层复制可以理解为只在第一层进行复制,如果这个列表有嵌套的结构,那么copy也达不到要求。

现在需要找到一种可以完全复制一个对象的方法,如果熟悉对象的结构是可以自己复制该对象的,但是这样是在重复造轮子,其实python早就想好了这个问题的解决办法,在python中有一个模块copy,这个模块可以实现浅层复制和深层复制,看一看怎么使用:

"""浅层copy与深层copy

浅层copy: copy.copy()
深层copy: copy.deepcopy()

the statistics of this file:
lines(count)    understand_level(h/m/l)    classes(count)    functions(count)    fields(count)
000000000042    ----------------------l    00000000000000    0000000000000000    ~~~~~~~~~~~~3
"""

import time
import copy

__author__ = '与C同行'

single_sheet_list = ['a', 'b', 'c']
double_sheet_list = [['a', 'b', 'c'],
                     ['d', 'e', 'f']]
deep_list = [['g', 'h'],
             ['i', 'j']]


if __name__ == '__main__':
    print(f'当前时间:{time.ctime()}')
    print()

    print('浅层复制:')
    single_sheet_list_copy = copy.copy(single_sheet_list)
    single_sheet_list_copy[0] = 'aa'
    print(single_sheet_list)
    print(single_sheet_list_copy)
    print()
    double_sheet_list_copy = copy.copy(double_sheet_list)
    double_sheet_list_copy[0][0] = 'aaa'
    print(double_sheet_list)
    print(double_sheet_list_copy)

    print('深层复制:')
    deep_copy = copy.deepcopy(deep_list)
    deep_copy[0][0] = 'ggg'
    print(deep_list)
    print(deep_copy)

结果如下:
在这里插入图片描述
浅层复制只是复制第一层的对象,这种复制使用起来要十分注意,否则一不小心就会出现意料之外的结果,深层复制可以复制到最后一层对象,这种复制使用起来会使得结果符合自己的意图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值