import copy #深拷贝: #步骤一:进行深拷贝 list1 = [["湖北武汉", "湖南长沙"], "广州深圳", "江西南昌", "浙江杭州"] list2 = copy.deepcopy(list1) # 进行深拷贝 #打印 #list1和list2两个列表的内存地址 = > 结果不一样 #步骤二:打印内存地址 print(id(list1)) # 3132367069640 print(id(list2)) # 3132368415752 #步骤三:打印类别当中子集内存地址 #打印list1和list2两个列表中的子列表的内存地址 = > 结果不一样 print(id(list1[0])) # 3132368414728 print(id(list2[0])) # 3132368415688 #步骤四:修改子集当中数据,与拷贝的地址的数据 #修改拷贝后的list2中的可变数据类型的数据 list2[0][0] = "武汉湖北" #结果list2列表修改了,但是不影响list1列表数据 print(list2) print(list1) """ 输出结果 [['武汉湖北', '湖南长沙'], '广州深圳', '江西南昌', '浙江杭州'] [['湖北武汉', '湖南长沙'], '广州深圳', '江西南昌', '浙江杭州'] """
#步骤一:进行浅拷贝 list1 = [["湖北武汉", "湖南长沙"], "广州深圳", "江西南昌", "浙江杭州"] list2 = list1.copy() # 进行浅拷贝 #步骤二:查看结果的内存地址 # 打印 list1 和 list2 两个列表的内存地址 => 结果不一样 print(id(list1)) # 2105959073864 print(id(list2)) # 2105989035464 # 打印 list1 和 list2 两个列表中的子列表的内存地址 => 结果一样 print(id(list1[0])) # 2105989035592 print(id(list2[0])) # 2105989035592 #步骤三:修改子集的数据 # 修改拷贝后的 list2 中的可变数据类型的数据 list2[0][0] = "武汉湖北" # 结果 list2 列表修改了,list1 列表数据也修改了 print(list2) print(list1) """ 结果如下 [['武汉湖北', '湖南长沙'], '广州深圳', '江西南昌', '浙江杭州'] [['武汉湖北', '湖南长沙'], '广州深圳', '江西南昌', '浙江杭州'] """