码迷,mamicode.com
首页 > 编程语言 > 详细

python_深拷贝与浅拷贝

时间:2019-06-10 13:59:22      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:复制   for   变量   font   script   info   com   pytho   图片   

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

 

深拷贝: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:\study\python\test\venv\Scripts\python.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:\study\python\test\venv\Scripts\python.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:\study\python\test\venv\Scripts\python.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:\study\python\test\venv\Scripts\python.exe D:/study/python/test/dd.py
[2, 4]
[1, 2, 3, 4]

 

python_深拷贝与浅拷贝

标签:复制   for   变量   font   script   info   com   pytho   图片   

原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/10996928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!