""" 题目:将一个列表的数据复制到另一个列表中。 """ import copy def validate(a, b): """ 验证复制结果 :param a: :param b: :return: """ print("a =", a) print("b =", b) print("a == b is", a == b) print("id(a) =", id(a)) print("id(b) =", id(b)) a[0][0] = 0 print("a[0][0] = 0后,a =", a) print("a[0][0] = 0后,b =", b) a[0] = 1 print("a[0] = 1后,a =", a) print("a[0] = 1后,b =", b) def answer1(): """ 直接将列表a=列表b,那么a和b是完全相同的,a列表发生改变时,b列表会跟着改变 :return: """ print("输出一:") a = [[1, 2], [3, 4]] b = a validate(a, b) answer1() def answer2(): """ 手动复制一层 :return: """ print(" 输出二:") a = [[1, 2], [3, 4]] b = [] for i in a: b.append(i) validate(a, b) answer2() def answer3(): """ 利用列表自带的copy方法,但是也只能copy一层 :return: """ print(" 输出三:") a = [[1, 2], [3, 4]] b = a.copy() validate(a, b) answer3() def answer4(): """ 利用列表的切片 :return: """ print(" 输出四:") a = [[1, 2], [3, 4]] b = a[:] validate(a, b) answer4() def answer5(): """ 深拷贝copy.deepcopy :return: """ print(" 输出五:") a = [[1, 2], [3, 4]] b = copy.deepcopy(a) validate(a, b) answer5() def answer6(): """ 浅拷贝copy.copy,同answer3 :return: """ print(" 输出六:") a = [[1, 2], [3, 4]] b = copy.copy(a) validate(a, b) answer6() def answer7(): """ 使用列表生成式 利用列表的for处理,好像是生成器 :return: """ print(" 输出七:") a = [[1, 2], [3, 4]] b = [i for i in a] validate(a, b) answer7() def answer8(): """ 利用列表乘以1来生成 序列相加 相乘: [1,2,3]+[4,5,6]=[1,2,3,4,5,6] 学列相加就是连接在一起 [1,2,3]*3=[1,2,3,1,2,3,1,2,3] 序列乘以一个常数N就是将序列复制N次 [1,2,3]*[1,2,3]=[] 报错TypeError :return: """ print(" 输出八:") a = [[1, 2], [3, 4]] b = a * 1 validate(a, b) answer8() def answer9(): """ 表1拓展到表2中 :return: """ print(" 输出九:") a = [[1, 2], [3, 4]] b = [] b.extend(a) validate(a, b) answer9()