python 深浅拷贝案例_python-浅拷贝、深拷贝实例以及讲解

# 1、浅拷贝 与 深拷贝 列表

import copy

a = [11, 22]

b = [33, 44]

c = [a, b]

d = c

e = copy.copy(c) # 浅拷贝

f = copy.deepcopy(c) # 深拷贝

a.append([55])

print(a, c, e, f)

print('a的id是{}, b的id是{}'.format(id(a), id(b)))

print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))

print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))

print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))

print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))

# 浅拷贝:只拷贝变量c 赋值给e 里面的变量a,b 不进行拷贝

# 深拷贝: 拷贝变量c以及里面里面的a,b 赋值给 f

# 2、浅拷贝 与 深拷贝 元组

import copy

a = (11, 22)

b = (33, 44)

c = (a, b)

d = c

e = copy.copy(c) # 浅拷贝

f = copy.deepcopy(c) # 深拷贝

print('a的id是{}, b的id是{}'.format(id(a), id(b)))

print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))

print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))

print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))

print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))

# 因为元组是不可变类型,如果要是拷贝元组就是引用指向了

# 3、浅拷贝 与 深拷贝 元组里面包含列表

import copy

a = [11, 22]

b = [33, 44]

c = (a, b)

d = c

e = copy.copy(c) # 浅拷贝

f = copy.deepcopy(c) # 深拷贝

print('a的id是{}, b的id是{}'.format(id(a), id(b)))

print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))

print('d的id是{}, d[0]的id是{}, d[1]的id是{}'.format(id(d), id(d[0]), id(d[1])))

print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))

print('f的id是{}, f[0]的id是{}, f[1]的id是{}'.format(id(f), id(f[0]), id(f[1])))

# 拷贝拥有 不可变类型的数据为最顶层,那么浅拷贝就变成了引用指向,深拷贝还是深拷贝

# 4、浅拷贝 与 深拷贝 切片c[:]

a = [11, 22]

b = [33, 44]

c = [a, b]

e = c[:]

print('a的id是{}, b的id是{}'.format(id(a), id(b)))

print('c的id是{}, c[0]的id是{}, c[1]的id是{}'.format(id(c), id(c[0]), id(c[1])))

print('e的id是{}, e[0]的id是{}, e[1]的id是{}'.format(id(e), id(e[0]), id(e[1])))

# [:]的性质和浅拷贝一样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值