zoukankan      html  css  js  c++  java
  • python中的赋值与拷贝(浅拷贝与深拷贝)

    1.赋值与拷贝

    直接赋值(b=a)是传引用,b改动a也会改动.

    a = [1, 2, 3, 4]
    b = a
    b[1] = 999
    print(a, b)
    #[1, 999, 3, 4] [1, 999, 3, 4]

    b=a.copy()或者b=a[:]是传值,b改动不影响a.

    a = [1, 2, 3, 4]
    b = a.copy()
    b[1] = 999
    print(a, b)
    #[1, 2, 3, 4] [1, 999, 3, 4]
    a = [1, 2, 3, 4]
    b = a[:]
    b[1] = 999
    print(a, b)
    #[1, 2, 3, 4] [1, 999, 3, 4]

    2.浅拷贝与深拷贝


    b=a.copy()和b=a[:]都是浅拷贝,也就是只有第一层是拷贝(传值),更深的层还是传引用.

    copy模块的deepcopy函数可以实现深拷贝(每一层都是传值).

    import copy
    
    a = [1, 2, 3, [1, 2, 3]]
    c = copy.deepcopy(a)
    c[3][1] = 999
    print(a, c)
    #[1, 2, 3, [1, 2, 3]] [1, 2, 3, [1, 999, 3]]
    
    b = a[:]
    b[3][1] = 999
    print(a, b)
    #[1, 2, 3, [1, 999, 3]] [1, 2, 3, [1, 999, 3]]
  • 相关阅读:
    GDI+绘制字体显示不全
    vector赋值
    创建不响应(不激活)窗口
    MouseHover
    duilib窗口从任务栏恢复问题
    java 加解密
    maven依赖仲裁
    $.ajax()
    mybatis 动态SQL
    Json学习
  • 原文地址:https://www.cnblogs.com/zywscq/p/10699710.html
Copyright © 2011-2022 走看看