Python3 List copy()方法
描述
copy() 函数用于复制列表,类似于 a[:]。
语法
copy()方法语法:
list.copy()
参数
- 无。
返回值
返回复制后的新列表。
实例
以下实例展示了 copy()函数的使用方法:
实例
#!/usr/bin/python3
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = list1.copy()
print ("list2 列表: ", list2)
list1 = ['Google', 'Runoob', 'Taobao', 'Baidu']
list2 = list1.copy()
print ("list2 列表: ", list2)
以上实例输出结果如下:
list2 列表: ['Google', 'Runoob', 'Taobao', 'Baidu']
Python3 列表
cowpea
115***1355@qq.com
copy()和直接=赋值的区别:
可以看出,使用=直接赋值,是引用赋值,更改一个,另一个同样会变, 例子中的a,b改变两次都影响到了对方
copy() 则顾名思义,复制一个副本,原值和新复制的变量互不影响 「a,c」
cowpea
115***1355@qq.com
龙龙
990***240@qq.com
arr = [{'name': 'wcl', 'age': 23}, {'name': 'wjy', 'age': 14}] arr2 = arr.copy() del arr[1] arr[0]['age'] = 18 print('arr', arr) print('arr2', arr2)输出结果为:
arr [{'name': 'wcl', 'age': 18}] arr2 [{'name': 'wcl', 'age': 18}, {'name': 'wjy', 'age': 14}]可以看出,copy() 只是是浅度复制,修改列表不会互相影响,但是修改列表里面的对象会影响到对方列表里面对象。
龙龙
990***240@qq.com
叫老王吧
268***1162@qq.com
浅拷贝内存原理:
a=[0,1,2,3,4,5] b=a """ 使用=赋值后,相当于[0,1,2,3,4,5]对象同时被变量a和b同是引用和指向,此后,如果通过变量a或者变量b途径取修改这个列表对象,因为a和b指向的是同一个列表对象,列表对象本身改变后,所有通过引用它的变量输出来的数据都是改变的. 类似于,大家公用一个寝室,其中一个人把寝室的面貌改变了,那么所有人再去描述现在的寝室,它都是改变过后的样子. 通过浅拷贝方法相当于其中一个人根据原来的寝室的面貌重新盖了一个寝室,所以a和b的改变与c的改变互不影响. """ c=a.copy() del a[1] ''' 各变量值为: a=[0, 2, 3, 4, 5] b=[0, 2, 3, 4, 5] c=[0, 1, 2, 3, 4, 5] ''' b.remove(4) ''' 各变量值为: a=[0, 2, 3, 5] b=[0, 2, 3, 5] c=[0, 1, 2, 3, 4, 5] ''' c.append(9) ''' 各变量值为: a=[0, 2, 3, 5] b=[0, 2, 3, 5] c=[0, 1, 2, 3, 4, 5, 9] '''当原对象存在多层嵌套的情况下,浅拷贝copy()只拷贝了最外层的数据结构,最外层所包含的数据变化时,是不会相互影响的,但是当原数据对象内部嵌套数据中的数据发生变化后,相应的浅拷贝后的对象也会发生变化.类似于一个公司,原来有一个宿舍,通过浅拷贝,重新造了一个相同建筑架构的宿舍.里面有物理墙体,电视,电脑,床位等,电视里播放着统一的画面.当公司改变了电视里播放的画面时,所有的宿舍都会发生改变.其中物理墙体,硬件电视等相当于最外层的对象结构,而电视里的画面就是内层嵌套的数据了。
arr = [{'name': 'wcl', 'age': 23}, {'name': 'wjy', 'age': 14}] arr2 = arr.copy() del arr[1] arr[0]['age'] = 18 #或者arr2[0]['age'] = 18 print('arr', arr) print('arr2', arr2)叫老王吧
268***1162@qq.com