【python3基础学习】【第2周】浅拷贝vs深拷贝

概念

  • 浅拷贝:浅拷贝相当于拷贝了原始变量的引用
  • 深拷贝:递归拷贝列表值,整个数据结构的数据,全部拷贝一份

浅拷贝示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy

if __name__ == '__main__':
    letters = ["a", "b", ["c", "d"]]
    letters_copy = letters.copy()
    print("字母列表:%s" % letters)
    print("浅拷贝_字母列表:%s" % letters_copy)

    print("---------------------------------")
    letters_copy.append("e")
    print("字母列表:%s" % letters)
    print("浅拷贝_字母列表:%s" % letters_copy)

    print("---------------------------------")
    letters_copy[-2].append("f")
    print("字母列表:%s" % letters)
    print("浅拷贝_字母列表:%s" % letters_copy)

    print("---------------------------------")
    letters_copy[0] = "k"
    print("字母列表:%s" % letters)
    print("浅拷贝_字母列表:%s" % letters_copy)

# 输出
字母列表:['a', 'b', ['c', 'd']]
浅拷贝_字母列表:['a', 'b', ['c', 'd']]
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
浅拷贝_字母列表:['a', 'b', ['c', 'd'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd', 'f']]
浅拷贝_字母列表:['a', 'b', ['c', 'd', 'f'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd', 'f']]
浅拷贝_字母列表:['k', 'b', ['c', 'd', 'f'], 'e']

深拷贝

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import copy

if __name__ == '__main__':
    letters = ["a", "b", ["c", "d"]]
    letters_deep_copy = copy.deepcopy(letters)
    print("字母列表:%s" % letters)
    print("深拷贝_字母列表:%s" % letters_deep_copy)

    print("---------------------------------")
    letters_deep_copy.append("e")
    print("字母列表:%s" % letters)
    print("深拷贝_字母列表:%s" % letters_deep_copy)

    print("---------------------------------")
    letters_deep_copy[-2].append("f")
    print("字母列表:%s" % letters)
    print("深拷贝_字母列表:%s" % letters_deep_copy)

    print("---------------------------------")
    letters_deep_copy[0] = "k"
    print("字母列表:%s" % letters)
    print("深拷贝_字母列表:%s" % letters_deep_copy)

# 输出:
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd']]
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['a', 'b', ['c', 'd', 'f'], 'e']
---------------------------------
字母列表:['a', 'b', ['c', 'd']]
深拷贝_字母列表:['k', 'b', ['c', 'd', 'f'], 'e']

浅拷贝四种方式

letters = ["a", "b", ["c", "d"]]
letters_copy1 = copy.copy(letters)
letters_copy2 = letters[:]
letters_copy3 = list(letters)
letters_copy4 = letters.copy()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值