• python中copy()和deepcopy()


    深复制即是我们平时说的复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
    浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被改变的时候,数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了

    import copy
    origin = [1, 2, [3, 4]]
    #origin 里边有三个元素:1, 2,[3, 4]
    cop1 = copy.copy(origin)
    cop2 = copy.deepcopy(origin)
    cop1 == cop2 #True
    cop1 is cop2 #False 
    #cop1 和 cop2 看上去相同,但已不再是同一个object
    origin[2][0] = "hey!" 
    origin #[1, 2, ['hey!', 4]]
    cop1 #[1, 2, ['hey!', 4]]
    cop2 #[1, 2, [3, 4]]
    #把origin内的子list [3, 4] 改掉了一个元素,观察 cop1 和 cop2

    不过我们也不经常使用,一般使用的pandas 的copy,那么在pandas的copy函数是深复制还是浅复制?答案如下:

    df1 = df.copy(deep=True)  # 深拷贝
    df1 = df.copy()           # 深拷贝,默认deep=True
    df1 = df.copy(deep=False) # 浅拷贝,仅复制对数据和索引的引用。对浅层副本任何修改都影响原始数据,反之亦然。
  • 相关阅读:
    六种排序
    洛谷 P1879 [USACO06NOV]玉米田Corn Fields
    [USACO06NOV]玉米田Corn Fields
    c++位运算符 | & ^ ~ && ||,补码,反码
    Blockade(Bzoj1123)
    割点(Tarjan算法)【转载】
    子串
    生命是什么
    怎样说话才打动人
    自控力
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/14417937.html
Copyright © 2020-2023  润新知