import copy listt=[4,0,5,[8,["蔬菜","水果"]],[11,13]]#建立多维深层列表,3维3层列表 cp1 = copy.copy(listt) cp2=copy.deepcopy(listt) listt[1]="baba"#对列表第一维数据第2个元素进行修改 print(listt) #输出结果:[4, 'baba', 5, [8, ['蔬菜', '水果']], [11, 13]] print(cp1) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]] print(cp2) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]] print('*'*50) listt[3]='mama'#用"mama"整体替换listt列表中的"[8, ['蔬菜', '水果']]" print(listt) #输出结果:[4, 'baba', 5, 'mama', [11, 13]] print(cp1) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]] print(cp2) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]] print('-'*50) listt[4][0]="didi"#用"didi"整体替换listt列表中的"11" print(listt) #输出结果:[4, 'baba', 5, 'mama', ['didi', 13]] print(cp1) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], ['didi', 13]] print(cp2) #输出结果:[4, 0, 5, [8, ['蔬菜', '水果']], [11, 13]] 结论: 1.用某个元素替换多维多层列表中的元素时,当替换的是第一维元素或整体替换某个二层列表时,运用copy.copy(原列表名称) 和copy.deepcopy(原列表名称)复制得到的数据,都不会跟随原列表的改变而改变,即即使元列表修改了,但复制过来的新列表还是与原来的列表一样。 2.当替换的是第二维及以上的某个元素时,copy.copy(原列表名称)会跟随原列表改变而改变,但是copy.deepcopy()不会改变。 注意:对于多维多层数列表,当列表只列出一个下标时,即使是二层以上的列表,对于的也只是列表元素,如上面的“listt[3]='mama'”,这里"mama"是整体替换listt列表中的"[8, ['蔬菜', '水果']]"
Python-copy()与deepcopy()区别
最新推荐文章于 2022-05-25 10:47:09 发布