(1)使用=直接赋值

a = [1, 2, 3, [6, 7]]

b = a

初始情况:

a: [1, 2, 3, [6, 7]]

b: [1, 2, 3, [6, 7]]

------------------

修改a[1] = 5之后的情况

a: [1, 5, 3, [6, 7]]

b: [1, 5, 3, [6, 7]]

------------------

修改b[2] = 8之后的情况

a: [1, 5, 8, [6, 7]]

b: [1, 5, 8, [6, 7]]

------------------

修改a[3][0] = 10之后的情况

a: [1, 5, 8, [10, 7]]

b: [1, 5, 8, [10, 7]]

------------------

修改b[3][0] = 20之后的情况

a: [1, 5, 8, [20, 7]]

b: [1, 5, 8, [20, 7]]

------------------

此时我理解中的内存图如下所示(0x0012xx表示内存地址):

即:使用=直接赋值,是引用赋值,更改任何其中一个,另一个都会改变。可以理解为:将列表a的指针赋值给b,此时a,b共用一个内存空间。

(2)使用b = a[:]或者b = a.copy()或者b = list(a)或者b = [i for i in a]或者copy模块的b = copy.copy(a)方法复制的情况

a = [1, 2, 3, [6, 7]]

b = a.copy()          #或b = a[:]或b = list(a)或b = [i for i in a]或b = copy.copy(a)

初始情况:

a: [1, 2, 3, [6, 7]]

b: [1, 2, 3, [6, 7]]

------------------

修改a[1] = 5之后的情况

a: [1, 5, 3, [6, 7]]

b: [1, 2, 3, [6, 7]]

------------------

修改b[2] = 8之后的情况

a: [1, 5, 3, [6, 7]]

b: [1, 2, 8, [6, 7]]

------------------

修改a[3][0] = 10之后的情况

a: [1, 5, 3, [10, 7]]

b: [1, 2, 8, [10, 7]]

------------------

修改b[3][0] = 20之后的情况

a: [1, 5, 3, [20, 7]]

b: [1, 2, 8, [20, 7]]

------------------

此时我理解中的内存图示这样的(0x0012xx表示内存地址):

(3)使用copy模块的deepcopy方法复制

import copy

a = [1, 2, 3, [6, 7]]

b = copy.deepcopy(a)

初始情况:

a: [1, 2, 3, [6, 7]]

b: [1, 2, 3, [6, 7]]

------------------

修改a[1] = 5之后的情况

a: [1, 5, 3, [6, 7]]

b: [1, 2, 3, [6, 7]]

------------------

修改b[2] = 8之后的情况

a: [1, 5, 3, [6, 7]]

b: [1, 2, 8, [6, 7]]

------------------

修改a[3][0] = 10之后的情况

a: [1, 5, 3, [10, 7]]

b: [1, 2, 8, [6, 7]]

------------------

修改b[3][0] = 20之后的情况

a: [1, 5, 3, [10, 7]]

b: [1, 2, 8, [20, 7]]

------------------

此时我理解中的内存图示如下(0x0012xx以及0x0024xx表示内存地址):

P01-Python中列表的复制问题的更多相关文章

  1. 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解

    引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>&g ...

  2. python中列表和元组以及字符串的操作

    python中列表是非常好用的.不过有一些使用小细节还需要注意一下. tag[32:-4] 从index为32到tag的倒数第4个字符. 如果索引为32的值在倒数第4个字符的右边,那么将输出为空.只要 ...

  3. python中文件的复制

    python中文件的复制 python的os模块有很多文件目录相关的函数,但没有提供直接复制文件的函数,当然可以通过边都边写的方式复制文件.想要直接复制文件可以通过shutil模块 shutil模块是 ...

  4. Python中列表,元组,字典,集合的区别

    参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...

  5. python中列表元素连接方法join用法实例

    python中列表元素连接方法join用法实例 这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,分享给大家供大家参考. ...

  6. python中列表和元组的操作(结尾格式化输出小福利)

    一. 列表 1. 查 names = "YanFeixu WuYifan" names_1 = ["YanFeixu"," WuYifan" ...

  7. Python中列表的各种方法

    列表是Python中一种常用的存储信息的方式,所以要熟练掌握列表的各种方法: 首先我们定义一个列表(name),然后练习里面的各种方法: >>> name = ["Sora ...

  8. Python中list的复制及深拷贝与浅拷贝探究

    在Python中,经常要对一个list进行复制.对于复制,自然的就有深拷贝与浅拷贝问题.深拷贝与浅拷贝的区别在于,当从原本的list复制出新的list之后,修改其中的任意一个是否会对另一个造成影响,即 ...

  9. Python中列表操作进阶及元组

    列表高级操作 一.遍历列表 >>> ls=['a','d','it'] >>> for val in ls: ... print (val) ... a d it ...

  10. Python中列表的使用

    python中的列表与java中的数组非常类似,但使用方法比java中数组简单很多,python中的数据类型不需要显示声明,但在使用时必须赋值,列表元素下标从0开始 初始化列表(初始化一个包含五个元素 ...

随机推荐

  1. opencv在64位4418上的移植

    1.mkdir build 2.cmake-gui 操作系统写Linux 去掉 去掉WITH_CUDA 去掉WITH_GTK 去掉WITH_1394 去掉WITH_GSTREAMER 去掉WITH_L ...

  2. Boost::split用法详解

    工程中使用boost库:(设定vs2010环境)在Library files加上 D:\boost\boost_1_46_0\bin\vc10\lib在Include files加上 D:\boost ...

  3. code3728 联合权值

    一开始暴搜,超时3个点... 后来看了题解: 首先,两个点的距离为2当且仅当它们都与一个点直接相连 反过来说,一个点所有的出边的终点都是互相距离2的(最大值可以依靠这个方法,前向星处理的时候将每个点的 ...

  4. python实现高效率的排列组合算法-乾颐堂

    组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...

  5. Spring Boot Reference Guide

    Spring Boot Reference Guide Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch,  ...

  6. spring boot☞Swagger2文档构建及单元测试

    首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建 ...

  7. linux的操作

    对tomcat的操作 打开终端 cd /java/tomcat#执行bin/startup.sh #启动tomcatbin/shutdown.sh #停止tomcat tail -f logs/cat ...

  8. 使用ffmpeg将海康视频rtsp转为hls

    测试环境: Ubuntu14.04 LTS Desktop ffmpeg version 3.3.3 命令行运行: ffmpeg -i rtsp://admin:12345@10.0.10.19:55 ...

  9. Linux下安装python,ftp,Ubuntu和centos配置静态ip以及下载地址

    一个服务器最多创建65535个端口Ubuntu apt-get aliyun转换https://www.cnblogs.com/hcl1991/p/7894958.htmlOpenSSLhttps:/ ...

  10. 基于行块分布函数的通用网页正文内容抽取(带HTML格式)

    算法思路: 假如网页正文(过滤html标签后的)有n行,以k行为一行块,总共可构成n-k+1行块: 以行号为索引号,以行块长度为索引值,形成行块稀疏矩阵: 以上面的稀疏矩阵为基础,找出其骤升骤降点,分 ...