파이썬에서 할당 연산자는 새로운 객체를 생성하지 않고 이미 존재하는 객체에 다른 이름을 부여합니다. 이것은 id() 함수로 확인할 수 있습니다.
>>> L1 = [1,2,3,4] >>> L2 = L1 >>> id(L1) 185117137928 >>> id(L2) 185117137928
실제로 목록을 복사하려면 다음과 같은 방법을 사용할 수 있습니다.
슬라이스 연산자:슬라이스 연산자의 두 피연산자는 슬라이스의 시작 및 끝 인덱스입니다. 명시적으로 사용하지 않으면 둘 다 기본적으로 시퀀스의 끝을 시작합니다. 이 기능을 활용할 수 있습니다.
>>> L1 = [1,2,3,4] >>> L2 = L1[:] >>> L1 [1, 2, 3, 4] >>> L2 [1, 2, 3, 4] >>> id(L1) 185117025160 >>> id(L2) 185117171592
또 다른 방법은 내장된 list() 메서드를 사용하는 것입니다.
>>> L1 =[ 1,2,3,4] >>> L2 = list(L1) >>> L1 [1, 2, 3, 4] >>> L2 [1, 2, 3, 4] >>> id(L1) 185117295816 >>> id(L2) 185117209352
파이썬 표준 라이브러리의 복사 모듈에는 객체의 얕은 복사와 깊은 복사를 위한 함수가 포함되어 있습니다. 깊은 복사는 중첩 복사이지만 얕은 복사에서는 내부 목록이 참조로만 복사됩니다.
>>> import copy >>> L1 = [1,2,3,4] >>> L2 = copy.copy(L1) >>> L1 [1, 2, 3, 4] >>> L2 [1, 2, 3, 4] >>> id(L1) 185117025160 >>> id(L2) 185117295880 >>> L3=copy.deepcopy(L1) >>> L3 [1, 2, 3, 4] >>> id(L3) 185117304328