简单了解Python字典copy与赋值的区别_python

来源:脚本之家  责任编辑:小易  

当你a=1000的时候a指向一个新的2113类,5261内容为1000,而b仍然指向原来4102指向的内容,因为你没有叫它指向其他内1653容。你使用=符号,使得a和b指向同一个内容,而copy则是将b的内容复制后让c指向这个拷贝的内容上了。看下面图种运行的结果。b=a,使用a改变"age",b和a中的都改变了。而c采用copy,不受影响。等会儿画个图补充上来就更容易理解了。追问那为什么改变了c ,a也会跟着改变呢== (根据你图的第二板块所示,c与a,b是分开的。。。)我觉得你画的这种情况像是deepcopy。。先谢谢你啦!追答C从来没有改变过。c中age的值一直保持在copy时获得的那个10,只有a和b在后面age变成了11。这个是个浅拷贝的事例,下面举个深拷贝的事例,并结合浅拷贝,c采用浅拷贝,d采用深拷贝,修改a中age的值,a和b的都改变了,c和d的没有改变,但是修改a中“d”里的list,则导致abc中list都改变,d中是深拷贝的则没有改变。详细看最下补充的图:a = {"d": ["a", "1"], "age": 10}b = a c = a.copy()from copy import deepcopyd = deepcopy(a)print "before:"print "a:", aprint "b:", bprint "c:", cprint "d:", da["d"].append("c")a["age"] = 11print "after:"print "a:", aprint "b:", bprint "c:", cprint "d:", d#=>结果before:a: {'age': 10, 'd': ['a', '1']}b: {'age': 10, 'd': ['a', '1']}c: {'age': 10, 'd': ['a', '1']}d: {'age': 10, 'd': ['a', '1']}after:a: {'age': 11, 'd': ['a', '1', 'c']}b: {'age': 11, 'd': ['a', '1', 'c']}c: {'age': 10, 'd': ['a', '1', 'c']}d: {'age': 10, 'd': ['a', '1']} ,Python中的2113对象之间赋值时是按引用传递的,如果需要5261拷贝对象,需要使用标准库中的4102copy模块。1. copy.copy 浅拷1653贝 只拷贝父对象,不会拷贝对象的内部的子对象。2. copy.deepcopy 深拷贝 拷贝对象及其子对象一个很好的例子:import copya = [1, 2, 3, 4, ['a', 'b']]  #原始对象b = a  #赋值,传对象的引用c = copy.copy(a)  #对象拷贝,浅拷贝d = copy.deepcopy(a)  #对象拷贝,深拷贝a.append(5)  #修改对象aa[4].append('c')  #修改对象a中的['a', 'b']数组对象print 'a = ', aprint 'b = ', bprint 'c = ', cprint 'd = ', d输出结果:a =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]b =  [1, 2, 3, 4, ['a', 'b', 'c'], 5]c =  [1, 2, 3, 4, ['a', 'b', 'c']]d =  [1, 2, 3, 4, ['a', 'b']]追问请问什么是父对象。。。本回答被网友采纳www.zgxue.com防采集请勿采集本网。

描述

Python 字典(Dictionary) copy() 函数返回一个字典的浅复制。

最近在学习 Python编程,遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy)。 首先说一下deepcopy

语法

copy()方法语法:

第一个 guess = 0if guess == 0: print('OK')这段代码可以执行,如果去掉第一行,会提示: NameError: name 'guess' is not defined原因是需要通过

dict.copy()

这个哪有为什么,语法就是这样的。你应该是用过一些其他的语言,是有d.Amam这种写法的,那其实是一个对象,和python的字典还是有些区别的,只是样子像,部分

返回值

返回一个字典的浅复制。

这个情况跟你设计有关系的,dict1['1']应该是一个list,然后dict2['1']是另外一个list。如果前面的list跟后面的list不是一个,或者没有copy的关系的

实例

以下实例展示了 copy()函数的使用方法:

在Python中存在深拷贝与浅拷贝的区别,相信有些Python初学者可能就有些疑惑,是指什么意思呢? 1. 赋值其实只是传递对象引用,引用对象id是一样的。 2.

dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = dict1.copy()print "New Dictinary : %s" % str(dict2)New Dictinary : {'Name': 'Zara', 'Age': 7}

直接赋值和 copy 的区别

可以通过以下实例说明:

dict1 = {'user':'runoob','num':[1,2,3]} dict2 = dict1 # 浅拷贝: 引用对象dict3 = dict1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用 # 修改 data 数据dict1['user']='root'dict1['num'].remove(1) # 输出结果print(dict1)print(dict2)print(dict3){'user': 'root', 'num': [2, 3]}{'user': 'root', 'num': [2, 3]}{'user': 'runoob', 'num': [2, 3]}

实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的,dict3 父对象进行了深拷贝,不会随dict1 修改而修改,子对象是浅拷贝所以随 dict1 的修改而修改。

没区别,结果都是使a赋值为5,b赋值为6。因为赋值时,列表[5,6]和元组(5,6)都会展开,变成5,6。下图很好地反应了这点:python代码输出,a,b=5,6 a和b是普通变量a,b=[5,6] a,b是从list [5,6]中取值a,b=(5,6)a,b是从turple(5,6)中取值,P Y T H文中这三种复制方式有区别吗?当然有区别了,你看一下书就内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 轻松理解python 中的 descriptor
  • python实现实时监控文件的方法
  • python操作sonqube api获取检测结果并打印过程解析
  • python生成随机密码或随机字符串的方法
  • python局域网ip扫描示例分享
  • django-crontab 定时执行任务方法的实现
  • django中传递参数到urlconf的视图函数中的方法
  • python爬虫爬取煎蛋网图片代码实例
  • python-flask:动态创建表的示例详解
  • python使用pyshp库读取shapefile信息的方法
  • python中,这三种赋值方式有区别吗?
  • 求大神名明示python中copy 与 '=' 的区别
  • Python中的赋值,浅拷贝和深拷贝的区别
  • python字典赋值
  • Python中copy和deepcopy中的区别
  • Python中赋值是什么意思
  • python中,为啥为字典数据赋值 用中括号?
  • python字典浅复制问题
  • python的复制,深拷贝和浅拷贝的区别
  • python 把一个字典的value赋值给另一个字典的key如...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python如何把字典写入到csv文件的方法示例python根据字典的键来删除元素的方法python将字典内容写入json文件的实例代码python字典key不能是可以是啥类型python将字典转换为xml的方法对python 字典元素进行删除的方法python如何合并多个字典或映射python基于字典实现switch case函数调用python redis存入字典序列化存储教程python 字典中的所有方法及用法轻松理解python 中的 descriptorpython实现实时监控文件的方法python操作sonqube api获取检测结果并打印过程解析python生成随机密码或随机字符串的方法python局域网ip扫描示例分享django-crontab 定时执行任务方法的实现django中传递参数到urlconf的视图函数中的方法python爬虫爬取煎蛋网图片代码实例python-flask:动态创建表的示例详解python使用pyshp库读取shapefile信息的方法python入门教程 超详细1小时学会pycharm 2020最新永久激活码(附python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython逐行读取文件内容的三种方基于python3的socket聊天编程python程序封装为win32服务的方法浅谈python 命令行参数argparse写入图片路python编程中对super函数的正确理解和用法python数据结构与算法之图结构(graph)实python实现搜索本地文件信息写入文件的方python 中urls.py:url dispatcher(路由配使用pytorch将文件夹下的图片分为训练集和python 生成器和迭代器的原理解析python创建日历实例
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved