zoukankan      html  css  js  c++  java
  • 深浅拷贝

    需求:想拷贝原列表,产生一个新的列表,而且想让两个列表完全区分开,互不影响,针对改操作,而不是读操作。

    浅copy:
    list1=['jake','rose',[1,2]]
    list2=list1.copy()

    list1和list2的内存地址不同
    但是list1[0]与list2[0]的内存地址是相同的
    总结:浅copy时,不可变类型的重新赋值,会改变原本的id,所以不会影响到新的列表,
    但是可变类型的特性(值改变,id不变),所以旧列表种的可变类型发生改变,会影响到新的列表。

    深copy:
    import copy
    list1=['jake','rose',[1,2]]
    list3=copy.deepcopy(list1)

    深copy时候,原列表的不可变类型的id都会被copy,但是可变类型会被赋予新的id地址。
    总结:由于不可变类型的特性(值变,id变),所以不会影响到新的列表。
    但是新列表的可变类型都被赋予了新的id,所以旧列表的可变类型发生变化时,也不会影响到新的列表。

    ps:若列表中只存在不可变类型可使用浅copy,若有不可变类型存在建议使用深copy.

    可变不可变类型:https://www.cnblogs.com/bailongcaptain/p/12430126.html

  • 相关阅读:
    Session Cookie介绍和使用
    Java 设计模式(概述)
    Java-JSON 解析
    Java Fileupload
    docker执行mysql容器修改用户权限
    分布式事务Seata
    idea配置git_2
    idea配置注释
    idea配置git的ssh
    远程阿里云镜像问题
  • 原文地址:https://www.cnblogs.com/bailongcaptain/p/12449996.html
Copyright © 2011-2022 走看看