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

    浅拷贝的方式有:

    lst=[1,2,3]

    (1)直接赋值: lst_cp = lst

    (2)for循环遍历生成:lst_cp= [i for i in lst]

    (3)copy模块下,copy.copy仍为浅拷贝

    深拷贝的方式

    (1)借助copy模块

    >>> import copy

    >>> lst_cp = copy.deepcopy(lst)

    以上方法的测试:

    注意:因为string类型是不可变类型,所以修改string元素时会新创建一个地址空间放置数据

    (1)直接赋值

    (2)for循环

    >>> lst=[1,2,3]
    >>> lst_cp=[i for i in lst]
    >>> lst_cp
    [1, 2, 3]
    >>> lst_cp[1]=4
    >>> lst_cp
    [1, 4, 3]
    >>> lst
    [1, 2, 3]
    >>> id(lst_cp[0])
    33263960
    >>> id(lst[0])
    33263960
    >>> id(lst_cp[1])
    33263888
    >>> id(lst[1])
    33263936

    另外注意:对于非容器类型(如数字、字符串、和其他’原子’类型的对象),浅拷贝与深拷贝相同,都是指向相同的地址空间。

    因为对于非容器类型,改变其值时,不是修改当前内存中的数据,而是新开辟一块内存存储数据。

    >>> ot=4
    >>> id(ot)
    37708144L
    >>> type(ot)
    <type 'int'>
    >>> ot=5
    >>> id(ot)
    37708120L

    下面一篇文章中对深拷贝与浅拷贝介绍的很清楚,地址:http://python.jobbole.com/82294/

  • 相关阅读:
    Mysql基本操作
    MySql架构
    并发中关键字的语义
    SpringMVC<一> 基本结构与配置
    Tomcat 顶层结构
    Linux 日常常用指令
    JSON 数据格式
    RMAN 增量备份级别说明
    Oracle常用数据库系统表单以及SQL的整理
    使用puTTY或Xshell连接阿里云TimeOut超时
  • 原文地址:https://www.cnblogs.com/lifeinsmile/p/5361745.html
Copyright © 2011-2022 走看看