【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()

你可能感兴趣的:(python3学习笔记)