Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 목록을 복제하거나 복사하는 방법은 무엇입니까?

<시간/>

파이썬에서 할당 연산자는 새로운 객체를 생성하지 않고 이미 존재하는 객체에 다른 이름을 부여합니다. 이것은 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