|
|
发表于 2019-3-3 15:20:27
|
显示全部楼层
1. list2 = list1 时,你所说的list2随着list1改变而改变,这里的改变应该是指 append,extentd,pop, + 等改变方式,而不是 list1 = list3 这种。
至于为什么会随之改变,因为 list 是可变类型,就是说可以变(添加,减少,修改)的,变了之后它还是它,因为虽然值变了,但是id地址不会变,
- list1 = [1, 2, 3]
- list2 = list1
-
- list1.append(4)
- list1.extend([4, 5])
- list1.pop(2)
- list1[0] = 0
- list1.insert(3, 5)
- list1 = [4, 5, 6]
复制代码
在上面几种改变 list1 的例子中,除了 list1 = [4, 5, 6] 以外,list2都会随之改变而改变,而且 list1 的地址也不会改变,就因为它是可变类型。
2. list2 = list1[:] 是一种浅拷贝(自己百度),id地址是改变了的,所以它不再是它了。
3.
- a = 3
- b = a
- a = 2
- print(b)
复制代码
整型是不可变类型,你把 a 变(加减乘除)了,id地址也会随之改变,所以 a 不再是原来的 a了,但 b 还是原来的 a。
|
|