P01-Python中列表的复制问题
(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中列表的复制问题的更多相关文章
- 对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
引用:https://www.jb51.net/article/142775.htm 列表赋值: 1 2 3 4 5 6 7 >>> a = [1, 2, 3] >>&g ...
- python中列表和元组以及字符串的操作
python中列表是非常好用的.不过有一些使用小细节还需要注意一下. tag[32:-4] 从index为32到tag的倒数第4个字符. 如果索引为32的值在倒数第4个字符的右边,那么将输出为空.只要 ...
- python中文件的复制
python中文件的复制 python的os模块有很多文件目录相关的函数,但没有提供直接复制文件的函数,当然可以通过边都边写的方式复制文件.想要直接复制文件可以通过shutil模块 shutil模块是 ...
- Python中列表,元组,字典,集合的区别
参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...
- python中列表元素连接方法join用法实例
python中列表元素连接方法join用法实例 这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,分享给大家供大家参考. ...
- python中列表和元组的操作(结尾格式化输出小福利)
一. 列表 1. 查 names = "YanFeixu WuYifan" names_1 = ["YanFeixu"," WuYifan" ...
- Python中列表的各种方法
列表是Python中一种常用的存储信息的方式,所以要熟练掌握列表的各种方法: 首先我们定义一个列表(name),然后练习里面的各种方法: >>> name = ["Sora ...
- Python中list的复制及深拷贝与浅拷贝探究
在Python中,经常要对一个list进行复制.对于复制,自然的就有深拷贝与浅拷贝问题.深拷贝与浅拷贝的区别在于,当从原本的list复制出新的list之后,修改其中的任意一个是否会对另一个造成影响,即 ...
- Python中列表操作进阶及元组
列表高级操作 一.遍历列表 >>> ls=['a','d','it'] >>> for val in ls: ... print (val) ... a d it ...
- Python中列表的使用
python中的列表与java中的数组非常类似,但使用方法比java中数组简单很多,python中的数据类型不需要显示声明,但在使用时必须赋值,列表元素下标从0开始 初始化列表(初始化一个包含五个元素 ...
随机推荐
- C程序之包含头文件
在C程序中包含文件有以下两种方法: 方法一:#include<XXX.h> 这里的XXX一般是改动较小的标准库,用符号"<"和">"将要 ...
- Python 中的 is 和 id-乾颐堂
(ob1 is ob2) 等价于 (id(ob1) == id(ob2)) 首先id函数可以获得对象的内存地址,如果两个对象的内存地址是一样的,那么这两个对象肯定是一个对象.和is是等价的.Pytho ...
- Python爬虫入门四之Urllib库的高级用法
1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...
- HUST软工1501-1503班第2周作业成绩公布
说明 本次公布的成绩对应的作业为: 第2周个人作业:WordCount编码和测试 如果同学对作业成绩存在异议,在成绩公布的72小时内(截止日期4月26日0点)可以进行申诉,方式如下: 毕博平台的第二周 ...
- [GO]空接口
package main import "fmt" //空接口的实际意义就在于在使用函数时,空接口可以接收任意类型的值,类似于python中的*args, **kwargs fun ...
- 【转载】Mysql中的Btree与Hash索引比较
转载地址:http://www.jb51.net/article/62533.htm 这篇文章主要介绍了Mysql中的Btree与Hash索引比较,本文起讲解了B-Tree 索引特征.Hash 索引特 ...
- 从零开始学习前端JAVASCRIPT — 8、JavaScript基础COOKIE
1:通信协议 定义:通信协议是指双方实体完成通信或服务所必须遵循的规则和约定.协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到 ...
- Android Lint——内嵌于Android Studio的代码优化工具
Android Lint工具是Android Studio 自带的静态代码工模具,Android Lint是专门针对Android 定制的检查规则,因此可以检查出很多Android特有的代码缺陷.建议 ...
- A Multi-Sensorial Simultaneous Localization and Mapping (SLAM) System for Low-Cost Micro Aerial Vehicles in GPS-Denied Environments
A Multi-Sensorial Simultaneous Localization and Mapping (SLAM) System for Low-Cost Micro Aerial Vehi ...
- 12、Semantic-UI之输入框
12.1 基础输入框 在Semantic-UI中可以定义多个样式的输入框,可以将图片与输入框结合,输入提示信息文字,设置输入框的状态. 示例:定义基础输入框 用户名: <div class= ...