愚公移山日记·38

愚公移山日记·38

今天的内容比较多可能会写好几篇(1)
简单不可变类型的拷贝

# 简单不可变类型都是浅拷贝
# 元组,字符串,数字 都是不可变
import copy


def test_copy():
    tiple1 = (1, 2, 3)
    print('tuple1 = ', tiple1, id(tiple1))
    # 对简单不可变类型进行浅拷贝
    # 等价于 tuple2 = tiple1
    tuple2 = copy.copy(tiple1)
    print('tuple2 = ', tuple2, id(tuple2))


tiple1 = (1, 2, 3)
print('tuple1 = ', tiple1, id(tiple1))
# 对简单不可变类型进行浅拷贝
# 等价于 tuple2 = tiple1
tuple2 = copy.deepcopy(tiple1)
print('tuple2 = ', tuple2, id(tuple2))


# 简单不可变类型 无论深拷贝还是浅拷贝 都无法创建新的内存空间

复杂可变类型的拷贝

# 含有嵌套关系的
import copy


def test():
    A = [1, 2]
    B = [3, 4]
    C = [A, B]

    print('A = ', A, id(A))
    print('B = ', B, id(B))
    print('C = ', C, id(C))
    print('C[0]', C[0], id(C[0]))
    # 复杂可变类型进行浅拷贝
    D = copy.copy(C)
    print('D = ', D, id(D))
    print('D[0] = ', D[0], id(D[0]))

    # 修改A的
    A[0] = 10
    print('A = ', A, id(A))
    print('D[0] = ', D[0], id(D[0]))


def test2():
    A = [1, 2]
    B = [3, 4]
    # [[1, 2],[3, 4]]
    C = [A, B]

    print('A = ', A, id(A))
    # print('B = ', B, id(B))
    print('C = ', C, id(C))
    # print('C[0]', C[0], id(C[0]))

    D = copy.deepcopy(C)
    print('D = ', D, id(D))
    print('D[0]= ', id(D[0]), 'c[0] = ', id(C[0]), 'A[0] = ', id(A[0]))

    # 修改A的
    A[0] = 10
    print('A = ', A, id(A))
    print('D[0] = ', D[0], id(D[0]))


test2()

python中的切片拷贝,字典拷贝

def test():
    # 简单可变 深拷贝
    list1 = [1, 2, 3, 4, 56]
    print('list1 = ', list1, id(list1))
    # 切片拷贝
    list2 = list1[:]
    print('list = ', list, id(list))


def test2():
    A = [1, 2]
    B = [3, 4]
    C = (A, B)
    print('C = ', C, id(C))
    D = C[:]
    print('D = ', D, id(D))
    D[0][0] = 4


# 字典拷贝,浅拷贝
dict1 = {'age': [1, 2]}
print('dict1 = ', dict1, id(dict1))
dict2 = dict1.copy()
print('dict2 = ', dict2, id(dict2))
print('--'*10)
dict1['age'][0] = 10
print('dict1 = ', dict1, id(dict1))
print('dict2 = ', dict2, id(dict2))

关于python的拷贝就这么多

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值