对于a=[1,2,3],以下方式等价:
- b = a[:]
- c = list(a)
- d = copy.copy(a)
- e = a*1 # 淫技
即拷贝a中元素的值到新的内存块
但是对于a中元素的值是地址的情况,依然会存在新的变量与旧的变量指向同一内存块的情况f = copy.deepcopy(a)
完全递归拷贝a中元素的值到新的内存块,不存在地址拷贝的情况>>> a = [[10],20]>>> b = a[:]>>> f = copy.deepcopy(a)>>> a.append(21)>>> a[0].append(21)>>> print(id(a),a)(4514549984, [[10, 21], 20, 21])>>> print(id(b),b)(4514551424, [[10, 21], 20])>>> print(id(f),f)(4514551496, [[10], 20])