以下是对列表的六种复制方式,总结来说在复制时有三种原理,其中 l1l1l1 是一种,l6l6l6 是第二种,其他的四个方法属于第三种。

import copy

l = [1, 2, [3, 4]]l1 = l

l2 = l.copy()

l3 = l[:]l4 = list(l)

l5 = copy.copy(l)

l6 = copy.deepcopy(l)

我们可以先来打印它们的地址:

print(id(l))

print(id(l1))

print(id(l2))

print(id(l3))

print(id(l4))

print(id(l5))

print(id(l6))

2515754890952

2515754890952

2515754891912

2515754910792

2515754891208

2515754863048

2515754910984

由此可以看出,l1l1l1 的复制原理是将 lll 的地址也一并复制过去了,也就是说,当 lll 发生改变时,l1l1l1 也会改变。但其他的复制方式则不会发生这个问题,比如:

l[0] = 0

print('l: ', l)

print('l1: ', l1)

print('l2: ', l2)

print('l3: ', l3)

print('l4: ', l4)

print('l5: ', l5)

print('l6: ', l6)

得到:

l: [0, 2, [3, 4]]l1: [0, 2, [3, 4]]l2: [1, 2, [3, 4]]l3: [1, 2, [3, 4]]l4: [1, 2, [3, 4]]l5: [1, 2, [3, 4]]l6: [1, 2, [3, 4]]

但是,如果我们针对 lll 内部的子列表做出改变时,只有 l6l6l6 会仍然保持不变,如:

import copy

l = [1, 2, [3, 4]]l1 = l

l2 = l.copy()

l3 = l[:]l4 = list(l)

l5 = copy.copy(l)

l6 = copy.deepcopy(l)

l[2][0] = 0

print('l: ', l)

print('l1: ', l1)

print('l2: ', l2)

print('l3: ', l3)

print('l4: ', l4)

print('l5: ', l5)

print('l6: ', l6)

l: [1, 2, [0, 4]]l1: [1, 2, [0, 4]]l2: [1, 2, [0, 4]]l3: [1, 2, [0, 4]]l4: [1, 2, [0, 4]]l5: [1, 2, [0, 4]]l6: [1, 2, [3, 4]]

所以,总结来说:

l1=ll1 = ll1=l:当 lll 变化时,l1l1l1 也会变化。

l2=l.copy()l2 = l.copy()l2=l.copy()、l3=l[:]l3 = l[:]l3=l[:]、l4=list(l)l4 = list(l)l4=list(l)、l5=copy.copy(l)l5 = copy.copy(l)l5=copy.copy(l):当 lll 中的单个数字发生变化时,l2l2l2、l3l3l3 、l4l4l4 、l5l5l5 都不会改变;当 lll 中的子列表发生变化时,l2l2l2、l3l3l3 、l4l4l4 、l5l5l5 都会改变。

l6=copy.deepcopy(l)l6 = copy.deepcopy(l)l6=copy.deepcopy(l):无论 lll 怎么变化,l6l6l6 都不会变。

作者:cofisher

python 复制列表内容_python 复制列表的六种方法相关推荐

  1. python 复制列表内容_Python复制列表列表

    来自 copy模块的文档: The difference between shallow and deep copying is only relevant for compound objects ...

  2. python清空列表内容_python 清空列表数据库

    Pyhton连接SQL Server数据库解决方案 为了提高工作效率及便利性,拟自主开发一款一键自动化运维小工具:其中主要一项功能用于与SQL Server数据库进行交互,程序可以根据数据库中数据情况 ...

  3. python删除列表内容_python删除列表内容

    今天有点囧 历遍的过程中明显MISS掉了   '**X_gamelog.sql'  这个项目,大家可以自己试试,为什么会没删完,这到底是什么原因呢? 我们再验证一次 看到结果,如果我们不对它进行rem ...

  4. Python实现将内容写入文件的五种方法总结

    本篇带你详细看一下python将内容写入文件的方法以及细节,主要包括write()方法.writelines() 方法.print() 函数.使用 csv 模块.使用 json 模块,需要的可以参考一 ...

  5. python列表反向_python反向列表

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在尝试根据最高值创建某种记分牌. 我添加了reverse = true标志但 ...

  6. python占位符用元组列表填充_python字符串列表元组序列操作

    Table of Contents generated with DocToc python系列-字符串.列表.元组的操作 序列的访问及运算符 序列是为满足程序中复杂的数据表示,python支持组合数 ...

  7. python 解决最佳方案_python使用列表的最佳方案

    python使用列表的最佳方案,列表,方式,方法,函数,表达式 python使用列表的最佳方案 易采站长站,站长之家为您整理了python使用列表的最佳方案的相关内容. 经常写Python程序的人,列 ...

  8. python两两组合_python – 一个列表中的两个组合列表

    我是一个Python初学者.我想从一个列表中获取两个组合列表. 例如,我有一个列表: c = [1, 2, 3, 4] 我想使用每四个项目来获得每个可能的组合来填充两个列表.将会有((2 ^ 4)/ ...

  9. python返回索引值_python 返回列表中某个值的索引方法

    python 返回列表中某个值的索引方法 如下所示: list = [5,6,7,9,1,4,3,2,10] list.index(9) out:3 同时可以返回列表中最大值的索引list.index ...

  10. python常用关键字意思_Python 关键字列表及示例

    本教程提供有关Python中使用的所有关键字的简要信息. 关键字是Python中的保留字.我们不能将关键字用作变量名,函数名或任何其他标识符. 这是Python编程中所有关键字的列表 上述关键字可能会 ...

最新文章

  1. 在CentOS上安装Java环境—openjdk1.7 解决https配置问题
  2. Eclipse中写jsp文件时,发现里面加载不了js文件和css文件(解决css文件在eclipse中显示不了)
  3. navigator.userAgent 取值都带有Mozill的原因。看完我笑了
  4. 专为linux设计的笔记本,平板变笔记本,Linux 设备也要凑凑热闹
  5. 如何使用Putty登录安装在VirtualBox里的ubuntu
  6. linux使用技巧教程,你不知道的 Linux 使用技巧
  7. Spring Boot 入门 IDEA 版本 2小时学会springBoot 代码上传至gitee 或者github 事务没做出来
  8. 服务器高并发下出现大量的time wait的解决办法
  9. raspberry pi_庆祝Raspberry Pi的14天
  10. webservice发请求没有不成功也不返回什么异常_RPC是什么,看完你就知道了
  11. 【Python 每天进步一点点】昨天把接口自动化测试框架部署在 测试环境 Linux 上,并且加入持续集成 Jenkins...
  12. 笔记本如何查看mac地址
  13. 人工智能 一种现代方法 第9章 一阶逻辑的推理
  14. IDEA设置字体大小之后没有效果的解决方案
  15. 阿里巴巴Java开发规范手册(详尽版)——免费下载
  16. Linux UDP协议栈中的片段分析 - udp_recvmsg
  17. mysql flush tables_MySQL 清理缓存—flush tablesFlush tables的影响
  18. java 俄罗斯方块原理,俄罗斯方块设计原理
  19. matlab里comb用法,comb - 操作字符串的利器
  20. TortoiseGit设置中没有远端设置问题

热门文章

  1. _cdecl与_stdcall的区别
  2. 自动类型转化的鲜为人知的陷阱
  3. 因社会不公大学生找不到工作
  4. 成大事必备9种能力.9种手段.9种心态
  5. 业内较好的监控mysql_MySQL监控、性能分析——工具篇
  6. python函数作用的描述_python基础之函数内容介绍
  7. MyBatis的环境搭建(图文)
  8. Android package属性、package name和Application ID三者的联系及区别
  9. Markdown插入代码
  10. 决策树-Cart算法二