zoukankan      html  css  js  c++  java
  • python_深拷贝与浅拷贝

    一、深拷贝和浅拷贝的区分

    深拷贝:A变量变化,B变量不受影响

    浅拷贝:A变量变化,B变量跟着改变

    常见的深拷贝和浅拷贝

    浅拷贝: 赋值 l=list1  ,l和list1指向的同一块内存,两者一起变化

    深拷贝:定义 l=[1,2,3]  切片赋值 l=list1[:]   深度复制 l=copy.deepcopy(list1)

    程序举例:

    1、赋值

    list1=[1,2,3,4] #定义
    list2=list1 #直接赋值给list2,两者内存指向一个位置
    for i in list1:
        if i%2:  #奇数移除
            list1.remove(i)
            
    print(list1) 
    print(list2)
    
    
    D:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
    [2, 4]
    [2, 4]

    2、切片赋值

    list1=[1,2,3,4] #定义
    list2=list1[:] #切片赋值,两者指向不同内存地址
    for i in list1:
        if i%2:  #奇数移除
            list1.remove(i)
    
    print(list1)
    print(list2)
    
    
    D:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
    [2, 4]
    [1, 2, 3, 4]

    3、深度复制

    import  copy
    list1=[1,2,3,4] #定义
    list2=copy.deepcopy(list1)#深度复制,两者指向不同内存地址
    for i in list1:
        if i%2:  #奇数移除
            list1.remove(i)
    
    print(list1)
    print(list2)
    
    
    D:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
    [2, 4]
    [1, 2, 3, 4]

    4、定义

    list1=[1,2,3,4] #定义
    list2=[1,2,3,4] #深度复制,两者指向不同内存地址
    for i in list1:
        if i%2:  #奇数移除
            list1.remove(i)
    
    print(list1)
    print(list2)
    
    
    
    D:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
    [2, 4]
    [1, 2, 3, 4]
  • 相关阅读:
    取石子(二)
    Nim游戏 之HDU 1850 Being a Good Boy in Spring Festival
    移动字母
    asterisk meetme 会议实现
    asterisk基础学习一
    Asterisk 1.8 sip 协议栈分析
    asterisk dialplan详解
    asterisk chan_sip.c代码分析
    asteirsk 开发指南
    asterisk 基础学习二
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/10996928.html
Copyright © 2011-2022 走看看