浅拷贝(copy.copy())

浅拷贝(copy.copy())

知识准备

  A,可变类型:列表,字典,集合
  B,不可变类型:数字,字符串,元组

浅拷贝(copy.copy())

  A,语法
       copy.copy(变量名)
  B,功能
       只对可变类型的第一层进行拷贝,对拷贝的对象分配新的内存空间进行存储。不会拷贝对象内部的子对象。
  C,代码示例

C1 不可变类型

运行代码

                  import  copy

# 不可变类型
#定义变量
print("-----------------------------")
print("浅拷贝示例")
print("-----------------------------")
print("不可变类型")
print("定义的原始变量信息:")
Tint = 56
Tstring = 'I love china'
Ttuple = (1 ,2 ,3)
#打印变量值及存储内存地址
print("Tint:",Tint,"内存地址为:",id(Tint))
print("Tstring:",Tstring,"内存地址为:",id(Tstring))
print("Tlist:",Ttuple,"内存地址为:",id(Ttuple))
#浅拷贝变量
print("------------------------------")
print("㳀拷贝后的变量信息:")
Tint_copy = copy.copy(Tint)
Tstring_copy = copy.copy(Tstring)
Ttuple_copy = copy.copy(Ttuple)
#打印拷贝变量的变量值及存储内存地址
print("Tint_copy:",Tint_copy,"㳀拷贝-内存地址为:",id(Tint_copy))
print("Tstring_copy:",Tstring_copy,"㳀拷贝-内存地址为:",id(Tstring_copy))
print("Ttuple_copy:",Ttuple_copy,"㳀拷贝-内存地址为:",id(Ttuple_copy))

运行结果
运行结果
说明:对于不可变类型复制,不开辟新的存储地址,只是将新变量的指针指向原始变量的内存地址。

C2 可变类型

# 浅拷贝
import  copy

#可变类型
print("-------------------------------")
print("可变类型")
print("定义原始变量信息")

Tlist = [10,20,30,[50,60]]
print("Tlist:",Tlist,"内存地址为:",id(Tlist))
print("Tlist[3]:",Tlist[3],"内存地址为:",id(Tlist[3]))
print("------------------------------")
print("浅拷贝后变量信息")
Tlist_copy = copy.copy(Tlist)
print("Tlist_copy:",Tlist_copy,"㳀拷贝-内存地址为:",id(Tlist_copy))
print("Tlist_copy[3]:",Tlist_copy[3],"㳀拷贝-内存地址为:",id(Tlist_copy[3]))

运行结果

在这里插入图片描述
说明:对可变类型的复制,只对第一层数据(Tlist_copy[0],Tlist_copy[1],Tlist_copy[2])开辟新存储空间,但对子对象(Tlist_copy[3])并为开辟新存储空间,只是将存储指针指向了原始变量Tlist[3]的存储地址。
浅拷贝只拷贝第一层数据。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值