赋值运算,对于赋值运算来说,元素用的都是一个内存地址 s = ["1","2","3"] b = s s.append("4") print(s,b)#打印['1', '2', '3', '4'] ['1', '2', '3', '4'] s = ["1","2","3",[11,22,33]] b = s s[-1].append("4") print(s, b)#打印['1', '2', '3', [11, 22, 33, '4']] ['1', '2', '3', [11, 22, 33, '4']] 浅copy,第一层元素各自独立,第二层开始,公用一个内存地址 s = ["1","2","3"] b = s.copy() s.append("4") print(s,b)#打印['1', '2', '3', '4'] ['1', '2', '3'] s = ["1","2","3",[11,22,33]] b = s.copy() s[-1].append("4") print(s,b)#打印['1', '2', '3', [11, 22, 33, '4']] ['1', '2', '3', [11, 22, 33, '4']] print(id(s),id(b))#打印2491607516992 2491607677824,两个不同的内存地址 print(id(s[-1]),id(b[-1]))#打印1488448126720 1488448126720,第二层元素开始内存地址相同 深copy,引用copy模块,每层的元素都是独立的 import copy s = ["1","2","3",[11,22,33]] b = copy.deepcopy(s) s[-1].append("4") print(s,b)#打印['1', '2', '3', [11, 22, 33, '4']] ['1', '2', '3', [11, 22, 33]] 切片来说,都是浅copy s = ["1","2","3",[11,22,33]] b = s[:] s[-1].append("4") print(s,b)#打印['1', '2', '3', [11, 22, 33, '4']] ['1', '2', '3', [11, 22, 33, '4']]