[Python] list내의 데이터를 복사하기
python에서 list를 다른 변수에 할당하게 되면, 레퍼런스 형태로 전달되기 때문에 실제로 같은 물리공간에 위치한 데이터를 가리키게 된다.
레퍼런스가 아니라 실제 값을 할당하고 싶다면 copy 모듈을 사용해야한다. copy 모듈은 copy와 deepcopy함수를 제공한다. 두 함수의 차이는 전자는 상위 리스트에 대해서만 값을 할당하는 반면, 후자는 하부 리스트에 대해서도 값을 할당해준다. 예를 들면 2차리스트의 경우 다음과 같다.
>>> a=[[1,2]]
>>> b=a
>>> print a,b
[[1, 2]] [[1, 2]]
>>> b[0][0]=-1
>>> print a,b
[[-1, 2]] [[-1, 2]]
>>> b=a
>>> print a,b
[[1, 2]] [[1, 2]]
>>> b[0][0]=-1
>>> print a,b
[[-1, 2]] [[-1, 2]]
레퍼런스가 아니라 실제 값을 할당하고 싶다면 copy 모듈을 사용해야한다. copy 모듈은 copy와 deepcopy함수를 제공한다. 두 함수의 차이는 전자는 상위 리스트에 대해서만 값을 할당하는 반면, 후자는 하부 리스트에 대해서도 값을 할당해준다. 예를 들면 2차리스트의 경우 다음과 같다.
>>> import copy
>>> a=[[1,2]]
>>> a1=copy.copy(a)
>>> a2=copy.deepcopy(a)
>>> print a,a1,a2
[[1, 2]] [[1, 2]] [[1, 2]]
>>> a1[0][0]=-1
>>> print a,a1,a2
[[-1, 2]] [[-1, 2]] [[1, 2]]
>>> a=[[1,2]]
>>> a1=copy.copy(a)
>>> a2=copy.deepcopy(a)
>>> print a,a1,a2
[[1, 2]] [[1, 2]] [[1, 2]]
>>> a1[0][0]=-1
>>> print a,a1,a2
[[-1, 2]] [[-1, 2]] [[1, 2]]
TRACKBACK ADDRESS :: http://bionote.net/tt/blna999/trackback/40
