bionote.net

[Python] list내의 데이터를 복사하기


python에서 list를 다른 변수에 할당하게 되면, 레퍼런스 형태로 전달되기 때문에 실제로 같은 물리공간에 위치한 데이터를 가리키게 된다.
>>> a=[[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]]
2005/06/10 16:12 2005/06/10 16:12
top

TRACKBACK ADDRESS :: http://bionote.net/tt/blna999/trackback/40

Leave a comment..