美文网首页
浅复制list.copy()的解释

浅复制list.copy()的解释

作者: goodAndBad | 来源:发表于2017-11-07 20:38 被阅读0次

    1

    a = [1,2,3,4]
    b = a.copy()
    b.append(5)
    print(a,b)
    

    输出:[1,2,3,4] [1,2,3,4,5]
    对b的修改没有影响a的数据。

    2

    a = [[1],2,3,4]
    b = a.copy()
    b[0].append(2)
    print(a,b)
    

    输出:[[1,2],2,3,4] [[1,2],3,4]
    对b的修改有影响a的数据。

    区别

    b = a.copy() 就等于

    b = []
    for i in a:
        b.append(i)
    return b
    

    对于 基本数据(不可修改) int string,就想象成值复制(实际并不是)。
    对于 list tupe map,就想象成引用复制(这确实是引用复制)。

    a = 1
    b = a
    b = 2
    print(a,b)
    

    输出 1,2
    值复制就上面像这样。

    a = [1]
    b = a
    b .append(2)
    print(a,b)
    

    输出: [1,2] [1,2]
    引用复制就上面这样,修改被引用的值,就把引用这个值的变量全修改了。

    浅复制是这样,它不管是引用or基本数据,就复制。
    深复制像下面这样,判断是不是引用类型,只有不是引用类型才复制。

    a = [[1],2,3,4]
    b = []
    for i in a:
        if isinstance(i,list):
            b.append(i.copy())
        else:
            b.append(i)
    
    

    这段代码只能深复制 两层嵌套 的list.
    以上。

    相关文章

      网友评论

          本文标题:浅复制list.copy()的解释

          本文链接:https://www.haomeiwen.com/subject/ddhsmxtx.html