Python 3 copy (깊이 와 얕 은 복사 의 차이)

3418 단어 Python
이 글 은 Luzhuo 에서 작 성 했 습 니 다. 이 메 시 지 를 보관 하 십시오. 원문:  http://blog.csdn.net/Rozol/article/details/71156387
다음 코드 는 Python 3.6.1 을 예 로 들 면  Less is more!
#!/usr/bin/env python
# coding=utf-8
__author__ = 'Luzhuo'
__date__ = '2017/5/3'
# copydemo.py copy     
#       :
# 1.   :        ,   '  '         。
# 2.   :        ,  '        '         

import copy


class Ls:
    def __init__(self, name):
        self.name = name

    @property
    def setname(self, name):
        self.name = name

    def __str__(self):
        return self.name

    __repr__ = __str__

    def __iter__(self):
        return self

list_0 = ["A", "B", ["C", "D"], Ls("E")]


def demo():
    # ---          ---
    list_1 = copy.copy(list_0)
    list_2 = list_0.copy()
    list_3 = list_0[:]
    list_4 = list(list_0)

    # ---          ---
    lists_d = copy.deepcopy(list_0)


    # ---         ---
    # 1.           
    list_0[0] = "X0"
    list_1[0] = "X1"
    list_2[0] = "X2"
    list_3[0] = "X3"
    list_4[0] = "X4"
    lists_d[0] = "Xd"

    #     :     ,          
    # list_0: ['X0', 'B', ['C', 'D'], E]
    # list_1: ['X1', 'B', ['C', 'D'], E]
    # list_2: ['X2', 'B', ['C', 'D'], E]
    # list_3: ['X3', 'B', ['C', 'D'], E]
    # list_4: ['X4', 'B', ['C', 'D'], E]
    # list_d: ['Xd', 'B', ['C', 'D'], E]

    # 2.      list      
    list_0[2][0] = "Y0"
    list_1[2][0] = "Y1"
    list_2[2][0] = "Y2"
    list_3[2][0] = "Y3"
    list_4[2][0] = "Y4"
    lists_d[2][0] = "Yd"

    #     : 0-1         ,             list   ;            
    # list_0: ['X0', 'B', ['Y4', 'D'], E]
    # list_1: ['X1', 'B', ['Y4', 'D'], E]
    # list_2: ['X2', 'B', ['Y4', 'D'], E]
    # list_3: ['X3', 'B', ['Y4', 'D'], E]
    # list_4: ['X4', 'B', ['Y4', 'D'], E]
    # list_d: ['Xd', 'B', ['Yd', 'D'], E]

    # 3.      Ls        
    list_0[3].name = "Z0"
    list_1[3].name = "Z1"
    list_2[3].name = "Z2"
    list_3[3].name = "Z3"
    list_4[3].name = "Z4"
    lists_d[3].name = "Zd"

    #     :          
    # list_0: ['X0', 'B', ['Y4', 'D'], Z4]
    # list_1: ['X1', 'B', ['Y4', 'D'], Z4]
    # list_2: ['X2', 'B', ['Y4', 'D'], Z4]
    # list_3: ['X3', 'B', ['Y4', 'D'], Z4]
    # list_4: ['X4', 'B', ['Y4', 'D'], Z4]
    # list_d: ['Xd', 'B', ['Yd', 'D'], Zd]


    print("list_0: {}".format(list_0))
    print("list_1: {}".format(list_1))
    print("list_2: {}".format(list_2))
    print("list_3: {}".format(list_3))
    print("list_4: {}".format(list_4))
    print("list_d: {}".format(lists_d))



if __name__ == "__main__":
    demo()


좋은 웹페이지 즐겨찾기