美文网首页
浅复制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()的解释

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

  • 11、python常用知识点

    基本数据类型 列表:list list.copy() 涉及到python的拷贝问题,这是python的浅拷贝。那么...

  • JS深浅拷贝

    浅拷贝 浅拷贝的意思就是只复制引用,而未复制真正的值。 深拷贝 深拷贝就是对目标的完全拷贝,不像浅拷贝那样只是复制...

  • js之深拷贝、浅拷贝

    浅拷贝 对于基本类型,浅拷贝是对值的复制,对于对象来说,浅拷贝只复制指向某个对象的指针,而不复制对象本身,并没有开...

  • python中的浅拷贝和深拷贝

    浅拷贝和深拷贝: 浅拷贝 shallow copy 浅拷贝是指在对象复制过程中,只复制一层变量,不会复...

  • Java 浅拷贝和深拷贝 拷贝和复制

    Java 复制与拷贝 大纲 浅拷贝和深拷贝 浅拷贝就是复制对象的一个精确副本 ==对于基本数据类型就是复制值,对于...

  • 浅|深 复制

    浅复制 //只写main函数 //结果是 我们可以看到一旦pointArray1发生了改变pointArray2也...

  • Java的浅拷贝与深拷贝

    Java的浅拷贝与深拷贝 一、概念 浅拷贝浅拷贝仅仅复制所考虑的对象(包括对象中的基本变量),而不复制它所引用的对...

  • iOS 深拷贝,浅拷贝

    深拷贝与浅拷贝 浅拷贝:浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝,并没有进行真正的复制,而是复制的对象...

  • 数组/对象的深浅拷贝

    浅拷贝 只复制了引用,没有复制真正的值; 实现数组浅拷贝可以利用arr.concat()、arr.slice()、...

网友评论

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

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