深浅拷贝和赋值关系
list1 = [1,2,3,4,5,6] list2 = list1 print(list2) list1[1]=['tao'] print('list1',list1) print('list2',list2) ''' [1, 2, 3, 4, 5, 6] list1 [1, ['tao'], 3, 4, 5, 6] list2 [1, ['tao'], 3, 4, 5, 6] ''' ''' 赋值就等于完全共享了资源,一个值的改变会完全被另一个值共享。 然而有的时候,我们偏偏需要将一份数据的原始内容保留一份,再去处理数据,这个时候使用赋值就不够明智了。 python为这种需求提供了copy模块。提供了两种主要的copy方法,一种是普通的copy,另一种是deepcopy。我们称前者是浅拷贝,后者为深拷贝。 ''' import copy list = [5,6,7] list3 = [1,2,3,4,list] list4 = copy.copy(list3) list3[0] = 'tao' print('list3:',list3) print('list4:',list4) ''' list3: ['tao', 2, 3, 4, [5, 6, 7]] list4: [1, 2, 3, 4, [5, 6, 7]] ''' ''' 深拷贝就是在内存中重新开辟一块空间,不管数据结构多么复杂,只要遇到可能发生改变的数据类型,就重新开辟一块内存空间把内容复制下来, 直到最后一层,不再有复杂的数据类型,就保持其原引用。这样,不管数据结构多么的复杂,数据之间的修改都不会相互影响。这就是深拷贝~~~ '''
推荐一个比较认同的解释:http://www.cnblogs.com/Eva-J/p/5534037.html