a = [1,2,3,4,5]
acopy1=a
acopy2 = a.copy()
print(a)
print(acopy2)
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
In [15]:
a [3]= "hello"
print(a)
print(acopy2)
[1, 2, 3, 'hello', 5] [1, 2, 3, 4, 5]
In [16]:
m = ['a', 'b', 'c']
n = [1, 2, 3]
x = [m, n]
y = x.copy()
print('x=',x)
print('y=',y)
x= [['a', 'b', 'c'], [1, 2, 3]] y= [['a', 'b', 'c'], [1, 2, 3]]
In [17]:
x[0][0] = 1
print('x=',x)
print('y=',y)
x= [[1, 'b', 'c'], [1, 2, 3]] y= [[1, 'b', 'c'], [1, 2, 3]]
列表是按地址传递的。
当把一个列表从一个变量传递到另一个变量中时,两个变量都指向这同一个列表的地址。
a=[1,2];
b=a #a和b变量都指向同一个列表的地址。
print(id(a),id(b)) #两个变量指向同一个地址
当对列表的属性赋值时,实际上是先读取变量中的地址找到列表,再改变这个列表的属性。
这样之后再用另一个变量中的地址所找到的也是这同一个列表,会获取到一样的列表内容。
b[1]=3;
print(b[1]) #输出 3
print(a[1]) #输出 3
而用b=a.copy()是产生一个新列表,a和b变量指向的是不同的列表地址
但是.copy() 只是浅拷贝,只能拷贝一层,详细的看下这个:
https://www.cnblogs.com/OoycyoO/p/9573051.html
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632