Python中的深浅拷贝
1.什么是深浅拷贝? python中一切皆对象,python中的数字、字符串、元组等,如果存放在了内存中,这部分内存里面的内容是不会改变的,但是也有情况,内存中存放了可变对象,比如说列表和字典,他们的内存空间是可以被修改的。 下面我们定义一个列表: list=[1,2,3,4,5] list1=list list[0]=6 >>>list [6,2,3,4,5] >>>list1 [6,2,3,4,5] 如果我们只想改变list,问题就出现了。 赋值操作 list1 = list,是浅拷贝,当list的值改变的时候,list1的值跟着改变。 2.用for和[:]实现浅拷贝 list = [ 1, 2, 3, 4, 5] list2= [ i for i in list] //list2=list[:] list2[-1]=0 >>> list >>> list2 [ 1, 2, 3, 4, 5] [ 1, 2, 3, 4, 0] 上面的例子,用for循环生成新的list2对象或者[:]切片赋值得到的list2,当改变list2的值时,list的值没有跟着改变,这就是深拷贝吗?且继续往下看: 3. list = [ 1, 2, 3, [ 1, 2009] ] list3 = [ i for i in list] //list2=list[:] list3[-1].append