我的理解: 浅拷贝:列表嵌套列表,子列表会变,父列表不会变 深拷贝:都不变 赋值不是拷贝 l1 = [1,2,3,4,[5,6,7,]] l2 = l1 # 赋值 赋值不是拷贝 多个变量指向同一个内存地址 一个变都变 l1.append(8) print(l1) print(l2) ''' 输出结果 [1, 2, 3, 4, [5, 6, 7], 8] [1, 2, 3, 4, [5, 6, 7], 8] ''' # 个人见解: # 赋值都指向同一个内存地址,值相同,值发生变化都变化 只拷贝第一层 浅拷贝会创建一个新的列表(容器) 新创建的列表中的元素和原列表的元素用的是同一个内存空间 l1 = [1,2,3,4,[4,5,6]] l2 = l1[:] # 浅拷贝 l2 = l1.copy() # 浅拷贝 -- 只拷贝第一层 print(id(l1[0])) print(id(l2[0])) ''' 输出结果 4438958224 4438958224 很明显内存地址相同 ''' # 个人见解: # l1中的[4,5,6]会变,外层不会变 不可变的数据类型和原列表指向同一个空间 可变数据会创建一个新的空间 import copy li = [1,2,3,4,5,[6,7,8]] l2 = copy.deepcopy(li) li[-1].append(678) print(li)