Python核心编程学习笔记-2016-07-24-01-理解copy和deepcopy
6.20节
copy实施方式:
(1)完全切片操作[:]
(2)工厂函数list(),tuple()等
(3)copy模块的copy函数
copy可以说是创建了了一个新的对象,但是内容仍然是原对象的引用。如果对其中含有的可变对象进行原地修改,copy后创建的新对象也会进行相应的修改。
比如代码:
<pre name="code" class="plain"><pre name="code" class="plain">>>> person = ['name', ['savings', 100.00]]
>>> hubby = person[:]
>>> wifey = list(person)
>>> [id(x) for x in person, hubby, wifey]
[36496136L, 36497544L, 32167496L] # person, hubby, wifey<span style="font-family: Arial, Helvetica, sans-serif;">是不同的对象</span>
>>> hubby[0] = 'joe'>>> wifey[0] = 'jane'>>> hubby, wifey(['joe', ['savings', 100.00]], ['jane', ['savings', 100.00]])>>> hubby[1][1] = 50>>> hubby, wifey(['joe', ['savings', 50.00]], ['jane', ['savings', 50.00]]) 在列表内,第二个元素是列表,但是在copy的过程中,只是复制了其内对象的引用,所以在对其内对象的原地修改,会导致copy后的对象也发生改变。
deepcopy实施方式是copy模块中的deepcopy()函数。
比如代码:
>>> person = ['name', ['savings', 100.00]]
>>> hubby = person
>>> import copy
>>> wifey = copy.deepcopy(person)
>>> [id(x) for x in person, hubby, wifey]
[36496136L, 36497544L, 36508616L]
>>> hubby[0] = 'joe'
>>> wifey[0] = 'jane'
>>> hubby, wifey
(['joe', ['savings', 100.00]], ['jane', ['savings', 100.00]])
>>> hubby[1][1] = 50
>>> hubby, wifey
(['joe', ['savings', 50.00]], ['jane', ['savings', 100.00]])
不同于copy,对于作为元素的列表,在deepcopy的过程中,不再是复制对象的引用,而是创建新的对象。所以即便是修改原对象,复制后的对象也不会发生改变。
Python核心编程学习笔记-2016-07-24-01-理解copy和deepcopy相关推荐
- Python核心编程学习笔记(一)
1.把一个字符串赋值给变量str.先用print来显示变量的内容,然后用变量名称来显示: >>>str = 'Hello World!' >>>print str ...
- python起步输入-[转载]python核心编程学习笔记-python起步
python通过两种方式来实现你的需求:语句和表达式 语句:使用关键字组成命令 >>> print 'Hello wolrd!' Hello wolrd! 表达式:可以是算术表达式或 ...
- 大数据第二阶段Python基础编程学习笔记(待完善)
大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...
- python核心装饰_《python核心编程》中高级闭包和装饰器理解?
1.<python核心编程>的这段程序怎么理解?对于这个函数,书上说两个wraaped是闭包,但是不知道谁是自由变量. 2.代码: from time import time def lo ...
- python网络编程学习笔记(二)
python网络编程学习(四) 多用途客户端协议 一.ftp 功能:上传下载文件,删除命名文件,建立删除目录,自动压缩,保存目录 1.代码: #coding=utf-8 '''连接远程ftp服务器,显 ...
- 【C++】黑马程序员-C++核心编程学习笔记
前言 根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode. 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C ...
- python网络编程需要学什么,python网络编程学习笔记(五):socket的一些补充 Python 网络编程需要学习哪些网络相关的知识...
python的socket编程问题hdr = recvall(s, 5) if hdr is None: print 'Unexpected EOF receivingstruct在unpack的时候 ...
- 转 windows核心编程 学习笔记 目录
windows核心编程--SEH(结构异常处理) SEH 的工作原理. Windows 程序设计中最重要的理念就是消息传递,事件驱动.当GUI应用程序触发一个消息时,系统将把该消息放入 ...
- Python 网络编程学习笔记(二)——DNS 域名解析客户端程序设计
本博文介绍如何使用 Python 网络编程,设计并实现客户端的 DNS 域名解析及缓存服务. 1 基本概念 域名系统(DNS)是一个庞大的.全球的分布式数据库,,它主要用来把主机名转换成 IP 地址, ...
最新文章
- Git 常用操作(2)- 创建标签
- 为什么要选择html5,5分钟告诉你,为什么要学HTML5大前端
- vue.js+socket.io打造一个好玩的新闻社区
- PHP 验证码 高洛峰 细说PHP
- mysql语句中%代表什么_常用的Mysql语句你知道多少?
- java 文件缓冲区_Java开发笔记(八十六)通过缓冲区读写文件
- intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法
- pjsua帮助手册(中文)
- oracle海量数据中提升创建索引的速度
- 设计师 VR 成型设计知识收集
- python自动化是什么意思_浅谈 Python 自动化
- Pythonblog_henry_dx_新浪博客
- Android 房贷计算
- PHP与MySQL交互实现网页登录注册功能(步骤超详细!!!)
- mysqlfrm 解析mysql frm文件 彻底解决phpmyadmin 管理表 “使用中”问题
- LeetCode 1665. 完成所有任务的最少初始能量
- 软件工程 个人学习笔记(第二章)
- 2021年电工(初级)考试题库及电工(初级)考试内容
- Hive中Floor函数精度计算问题
- App怎么推广最有效
热门文章
- Android自定义View实现喜马拉雅播放状态切换
- 拼多多API接口详情,item_get-根据ID取商品详情
- Kubernetes准入控制器指南
- 450g吐司烘烤温度_柔软漂亮的吐司,烘烤时间和温度不容忽视,配方揉面发酵也是重点...
- Vue绑定事件,双向数据绑定,只是循环没那么简单
- PART 5 多为数据透视分析
- 覆盖5大任务,30+特色模型,高性能、全流程开发套件PaddleRS助力遥感影像智能解译化繁为简...
- ng-switch指令
- 维克房地产中介管理软件 v2.62 个人版 下载
- 【HTML 教程系列第 12 篇】什么是 HTML 中的 div 标签