(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. [C++] Template Function _ Any number of parameters

    Template Function _ Any number of parameters #include<iostream> #include<cstdarg> using ...

  2. Texstudio

    Texstudio快捷键:Ctrl+T,选中之后按这个可以快速注释

  3. AngularJS基本使用

    简介 AngularJS是Google开源的前端JS结构化框架 Angular关注的是动态展示页面数据, 并与用户进行交互.其主体不再是DOM,而是页面中的动态数据 AngularJS特性(优点) 双 ...

  4. ajax中 XmlHttp的open( )方法

    博客分类:  Ajax XML  open 创建一个新的http请求,并指定此请求的方法.URL以及验证信息 语法 oXMLHttpRequest.open(bstrMethod, bstrUrl, ...

  5. Smarty的条件判断语句

    (1)基本句式{if $name eq "Fred"}Welcome Sir.{elseif $name eq "Wilma"}Welcome Ma'am.{e ...

  6. oracle中的表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)

    数据文件和日志文件是数据库中最重要的文件.它们是数据存储的地方.每个数据库至少有一个与之相关的数据文件,通常情况下不只一个,有很多.数据在数据文件中是如何组织的?要了解这些内容我们首先必须理解什么是表 ...

  7. Mac上phantomjs装了不能用的解决

    下了,装了.然后整这句命令: phantomjs --version 直接报错.. 查了半天的官方文档,居然连个毛线都么找到.终于...墨迹到了一个方法,就抱着试一试的心态在terminal里输入了这 ...

  8. asp.net WebAPI 问题 iisnode默认不支持PUT和DELETE的解决

    因为iisnode的自动重启服务器方便,一直用的它来作为开发中的node服务器,今天一个delete命令过去,得到一个405(?好像是)错误,让我很郁闷. 用原生的node试一下,是完美支持的,本来打 ...

  9. post上传文件限制--另一种解决途径

    问题:项目之前的上传功能是没有问题的,但是今天同样的代码上传一个压缩包的时候出现了问题,报的是struts.xml的错,说是找不到返回的映射, 问题截图: 很奇怪的问题,之前都没问题的,仔细对比后发现 ...

  10. react学习笔记(1):从前后端分离到项目部署

    我来到现在这家公司有一年多的时间,一直做的是财政系统相关的产品,前端的技术栈用的是传统的jQuery+bootStrap+requireJs,随着项目的开发,越来越多的弊病凸显出来. 首先是前后端的代 ...