list1 = [1, 2, 3] list2 = list(list1) print(list2) print("list1==list2 ?",list1==list2) print("list1 is list2 ?",list1 is list2) set1= set([1, 2, 3]) set2 = set(set1) print(set2) print("set1==set2 ?",set1==set2) print("set1 is set2 ?",set1 is set2)執行結果為:
[1, 2, 3]
list1==list2 ? True
list1 is list2 ? False
{1, 2, 3}
set1==set2 ? True
set1 is set2 ? False
list1 = [1, 2, 3] list2 = list1[:] print(list2) print("list1 == list2 ?",list1 == list2) print("list1 is list2 ?",list1 is list2)執行結果為:
[1, 2, 3]
list1 == list2 ? True
list1 is list2 ? False
import copy list1 = [1, 2, 3] list2 = copy.copy(list1) print(list2) print("list1 == list2 ?",list1 == list2) print("list1 is list2 ?",list1 is list2)執行結果為:
[1, 2, 3]
list1 == list2 ? True
list1 is list2 ? False
tuple1 = (1, 2, 3) tuple2 = tuple(tuple1) print(tuple2) print("tuple1 == tuple2 ?",tuple1 == tuple2) print("tuple1 is tuple2 ?",tuple1 is tuple2)執行結果為:
(1, 2, 3)
tuple1 == tuple2 ? True
tuple1 is tuple2 ? True
list1 = [[1, 2], (30, 40)] list2 = list(list1) list1.append(100) print("list1:",list1) print("list2:",list2) list1[0].append(3) print("list1:",list1) print("list2:",list2) list1[1] += (50, 60) print("list1:",list1) print("list2:",list2)執行結果為:
list1: [[1, 2], (30, 40), 100]
list2: [[1, 2], (30, 40)]
list1: [[1, 2, 3], (30, 40), 100]
list2: [[1, 2, 3], (30, 40)]
list1: [[1, 2, 3], (30, 40, 50, 60), 100]
list2: [[1, 2, 3], (30, 40)]
import copy list1 = [[1, 2], (30, 40)] list2 = copy.deepcopy(list1) list1.append(100) print("list1:",list1) print("list2:",list2) list1[0].append(3) print("list1:",list1) print("list2:",list2) list1[1] += (50, 60) print("list1:",list1) print("list2:",list2)執行結果為:
list1: [[1, 2], (30, 40), 100]
list2: [[1, 2], (30, 40)]
list1: [[1, 2, 3], (30, 40), 100]
list2: [[1, 2], (30, 40)]
list1: [[1, 2, 3], (30, 40, 50, 60), 100]
list2: [[1, 2], (30, 40)]
import copy list1 = [1] list1.append(list1) print(list1) list2 = copy.deepcopy(list1) print(list2)執行結果為:
[1, [...]]
[1, [...]]
def deepcopy(x, memo=None, _nil=[]): """Deep copy operation on arbitrary Python objects. See the module's __doc__ string for more info. """ if memo is None: memo = {} d = id(x) # 查詢被拷貝物件 x 的 id y = memo.get(d, _nil) # 查詢字典裡是否已經儲存了該物件 if y is not _nil: return y # 如果字典裡已經儲存了將要拷貝的物件,則直接返回 ...