美文网首页
python 深拷贝 和 浅拷贝

python 深拷贝 和 浅拷贝

作者: clever哲思 | 来源:发表于2019-11-01 11:50 被阅读0次

    做牛客时碰到的问题

    In [23]: a = {1:[]}                                                                                                                                                                                                                     
    
    In [24]: c = deepcopy(a)                                                                                                                                                                                                                
    
    In [25]: b = copy(a)                                                                                                                                                                                                                    
    
    In [26]: a[1].append(1)                                                                                                                                                                                                                 
    
    In [27]: a                                                                                                                                                                                                                              
    Out[27]: {1: [1]}
    
    In [28]: b                                                                                                                                                                                                                              
    Out[28]: {1: [1]}
    
    In [29]: c                                                                                                                                                                                                                              
    Out[29]: {1: []}
    
    In [13]: a = {1:1}              # key 是1的对象是一个不可变对象,                                                                                                                                                                                                        
    
    In [14]: b = copy(a)                    # 浅拷贝                                                                                                                                                                                               
    
    In [15]: c = deepcopy(a)             #深拷贝                                                                                                                                                                                 
    
    In [16]: a                                                                                                                                                                                                                              
    Out[16]: {1: 1}
    
    In [17]: b                                                                                                                                                                                                                              
    Out[17]: {1: 1}
    
    In [18]: c                                                                                                                        
    Out[18]: {1: 1}
    

    总结:

    • 对于不可变对象,比如str, int, 那么深拷贝浅拷贝是一样的, 修改原对象,不会对新对象产生影响,
    • 而对于可变对象, 深拷贝把值复制了, 那么改变原来的对象, 新对象不会改变,,但是浅拷贝不一样,浅拷贝只拷贝了可变对象的引用,所以改变原对象的 可变数据, 那么新对象也会改变

    相关文章

      网友评论

          本文标题:python 深拷贝 和 浅拷贝

          本文链接:https://www.haomeiwen.com/subject/qxdbuctx.html