zoukankan      html  css  js  c++  java
  • python学习——练习题(7)

    """
    题目:将一个列表的数据复制到另一个列表中。
    """
    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()
    

      

  • 相关阅读:
    洛谷 P5249 [LnOI2019]加特林轮盘赌 概率DP
    c++提高学习笔记——05-c++STLday10
    c++基础学习笔记——04-c++day09
    c++基础学习笔记——04-c++day08
    c++基础学习笔记——04-c++day07
    c++基础学习笔记——04-c++day06
    c++基础学习笔记——04-c++day05
    c++基础学习笔记——04-c++day04
    c++基础学习笔记——04-c++day03
    c++基础学习笔记——04-c++day02
  • 原文地址:https://www.cnblogs.com/longphui/p/8047097.html
Copyright © 2011-2022 走看看