登陆注册
71628900000022

第22章 多维数据的副本考量

在 Python 的分配语句理解上,我们可以看成类似指针的概念。但是我们要考虑两种情况,就是:

一、对数据的副本操作是否会影响原始数据?

二、对原始数据操作是否会影响副本数据?

那么我们从三方面来弄清楚复制对象机制:

第一,指向机制。

例如:

a =[[1,2,3],[4,5,6]]

a = b

在这种情况下,原始数据是一个二维列表,变量 a 指向了原始数据,对变量 a 的操作相当于对原始数据的操作。变量 b 相当于变量 a 的别名,所以对变量 b 的操作会改变 a 变量的值。

第二,浅层复制机制。

那么我们如果使用列表构造器来建立数据副本的话,例如:

c = list(a)

c is a # Fasle 说明副本建立成功

c[0] is a[0]# True 说明是浅层复制

那么变量 c 的值虽然与原始数据相同,但如果对 c[0]做操作的话,变量 a 的值依然不会改变,反之亦然。

这里要注意的是,当浅层复制原始数据未被改变之前,如果对 a[1][0]做操作的化,会改变 c 变量的值,反之亦然。这是因为 Python 的内置副本操作都是一种浅层复制。

这里的重点是,我们如何识别数据中原始数据与副本数据之间是否属于浅层复制?那么我们会使用 is 成员关系操作符来做数据对象之间的 id 判断。

第三,深层复制机制。

对于深层复制来说,Python 提供了一个 copy 标准库来实现数据的深层复制。例如:

import copy

d = copy.deepcopy(a)

d[0] is a[0]# False 说明实现了深层复制

这里要注意一点,在深层复制时,虽然例如:

d[0][0] is a[0][0]# True 原始数据内存地址一样

a[0][0]= 0

a[0][0] is d[0][0]# False 并不影响副本数据

重点是原始数据与副本数据完全是互不影响的。

那么这三种不同的机制,会根据数据对象的功能需求来配组使用。

同类推荐
  • 快穿逍遥:玩一下就好

    快穿逍遥:玩一下就好

    “二狗子,我以一个过来人的心态警告你,不要太过分。”“明白!”一觉醒来,连人带床一起换了个地方,还附带一只二狗子系统?这不是真的,我一定还没睡醒……
  • 末世执法官

    末世执法官

    一个会画符的业余制符师,一本不靠谱的神秘黄皮书, 一片有温度的末世小封地。 我为执法官,愿以法平天下。
  • 陨击

    陨击

    多个平行世界中的贫瘠地球,被一个从天而降的陨石削成如月牙般的“地牙”,人类被陨石上的紫色晶体改变,地球改变!原本荒寂的地球发生巨大的变化!在这种高度文明的星球会发生怎样的事呢?
  • 末世之惊涛骇浪

    末世之惊涛骇浪

    巨大的海啸卷席全球,人类从此进入海洋时代!凶猛的海洋巨兽,神秘的海洋之子,古老的上古之舟,人类的未来,到底何去何从?(跟末世没什么关系,喜欢这种类型的都可以看)
  • 末世重生之魔帝

    末世重生之魔帝

    三千魔神图、噬魂魔幡、万魔宝印、九幽镇魂碑、天妖镇魔塔……宇宙风暴将各大通往地球的位面屏障全都撕裂,虫族、魂族、尸族。魔族等异族降临地球。人类由高高在上的主宰者瞬间沦为了猎物。“这一世,哪怕……是赌上我所有,也要在百族之中杀出一条生路。”——————————PS:这本书充斥着暴戾、黑暗、血腥、变态,没有一点正能量。这本书不适合普通人看,不适合正常人看,更不适合卫道士和正人君子看。鄙人最喜欢做的事就是挖坑,而且只管挖不管埋。这本书里的大坑套小坑,一脚陷进去就不好拔出来,大家一定要慎入。
热门推荐
  • 狩猎皇后

    狩猎皇后

    皇帝乃万人之上,皇后的选举可不能含糊,文武大臣为选妃焦急万分,皇帝大人可闲不住了。且看皇帝爬墙给你看!为什么要爬墙呢?朕乃出宫找皇后是也!满心欢喜,赢得美人归!什么?居然有人想要乘机篡位,是哪个王八加红薯的胆子这么大,给朕站出来,这回可不是我不同意,而是俺的夫人不同意!
  • 鬼才千洛璃

    鬼才千洛璃

    不知道写啥,反正想看的点进来就是了呗,?????
  • 带着魔尊神帝做狂婿

    带着魔尊神帝做狂婿

    前世魔尊,后世神帝,都市全能,无人匹敌,敢指着世界富豪说,别惹我,分分钟让你破产,敢指着古武修炼者说,别惹我,分分钟可以送你上西天。
  • 仙浔无双之灼灼其华

    仙浔无双之灼灼其华

    【小虐+暗黑+后宠】他耗尽灵力,逆天而为护她周全,却几千年都不曾承认爱过。她伤痛欲绝,归隐山林不问世事。再遇他之时,他却狠心饮下孟婆汤将她彻底忘记,这一次她改如何抉择?————————————————————————————————她一身洁白嫁衣染满鲜血,眼中悲凉万分,没了师父这世间再无一人会对她牵肠挂肚。他失去记忆亲手将她师父杀掉,唤回记忆后,却不曾想自己竟这般爱她。没有了她,即使登上这天帝之位又有何用?他想要的从头到尾只有她一人。“冥翊,今日我便将我费尽心力拿回来的记忆还你,我要让你尝尝什么叫做爱而不得,让你重新感受众判亲离的滋味!让你好好感受一下这几千年来我替你承受的相思之苦!”
  • 姐妹三人闯天下

    姐妹三人闯天下

    木有简介(咳咳,吐槽的随意)这里,我得吐槽腾讯文学的系统,简介居然不满20字不能发表。
  • 猎海传

    猎海传

    生死之秘,风云交汇,偷生者的猎杀,向往者的绝境,无知者的苟且,天道即变,世人皆罪,罪海倾天,猎海护世
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 御少的专属爱妻

    御少的专属爱妻

    他是龙城的首席总裁御莫辰,传言他女人如衣服,生性狠辣,杀人如麻。一场意外,她误惹上了他,成为了他的贴身情妇,但最终他的前女友华丽回归,为了他的前女友他不惜拿她当做筹码,送给了他的对手!五年之后,她带着儿子高调回国,参加他和别的女人的订婚宴,可他却将她逼到墙角,霸道的将她圈在怀里说道“老婆,这些年独自在外带着咱儿子辛苦你了,老公我现在就犒劳犒劳老婆你!”“啊——御莫辰你混蛋!放开!不准撕我衣服……”
  • 校园男女生

    校园男女生

    包含几十个妙趣横生的小故事,故事大多发生在青少年读者熟悉的校园中,娓娓道来,很有情趣。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!