1.  1 #直接赋值
     2 list = [1,2,['a','b'],'python']
     3 #现将a等于list
     4 a = list
     5 print a 
     6 [1,2,['a','b'],'python']
     7 list.append(5)
     8 print list
     9 [1,2,['a','b'],'python',5]
    10 print a 
    11 [1,2,['a','b'],'python',5]
    12 #直接赋值其实是传递对象的引用,原始列表改变,被赋值的a也会做相同的改变。
     1 #如果需要拷贝对象,需要使用标准库中的copy模块。
     2 import copy
     3 # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 
     4 list = [1,2,['a','b'],'python']
     5 #b浅拷贝了list
     6 b = copy.copy(list)
     7 list[3] = 'java'
     8 print list
     9 [1, 2, ['a', 'b'], 'java']
    10 print b
    11 [1, 2, ['a', 'b'], 'python']
    12 #是的b没有改变因为整个列表是父级的,我来修改一个子级的:
    13 list[2][0] = 'A'
    14 print list
    15 [1, 2, ['A', 'b'], 'java']
    16 print b
    17 [1, 2, ['A', 'b'], 'python']
    18 #修改成功。
     1 #深拷贝,拷贝父对象和子对象
     2 c = copy.deepcopy(list)
     3 
     4 list[0]=3
     5 
     6 print list
     7 [3, 2, ['A', 'b'], 'java']
     8 
     9 print c
    10 [1, 2, ['A', 'b'], 'java']
    11 #修改子对象
    12 list[2][1] = 'B'
    13 
    14 print list
    15 [3, 2, ['A', 'B'], 'java']
    16 
    17 print c
    18 [1, 2, ['A', 'b'], 'java']
    19 #所有对象都拷贝,所以在改动源对象时,深拷贝的对象是无法改变的