a=[1,2,3,4]
b=[5,6,7,8]
c=a+b #此时id(c[0])与id(a[0])是一致的,说明数据存放的地址一致
c[0]=10 #此时id(c[0]与id(a[0])变不一致了
print(c,a) #输出 [10, 2, 3, 4, 5, 6, 7, 8] [1, 2, 3, 4]
a=[1,2,3,4]
c=a #此时id(c[0]与id(a[0])是一致的
c[0]=10 #此时id(c[0]与id(a[0])是一致的
print(c,a) #输出 [10, 2, 3, 4] [10, 2, 3, 4]
为什么两者的修改影响会不一样?萌新觉得难理解
python针对-5~256的小整数做了优化,都是从缓存里取的同一个对象,所以上面部分的id一样
下面部分c和a引用相同,不管怎么改id都会一致
我也是个新手,按照你的代码实验了一下,在 c[0] = 10 那里 id(c[0])和id(a[0])当然不一样,因为 id(c[0]) 其实就是 id(10),
当你执行了 c = a 之后,两者 id 就完全相等了,相当于共用一个 id ,所以你在修改 c[0] 的值的时候 ,a[0] 的值也会变化