[Python] 2차원 리스트

*참고 : https://dojang.io/mod/page/view.php?id=2291

a = [[10, 20],
     [30, 40],
     [50, 60] ]

2차원 리스트의 할당과 복사

파이썬의 리스트는 다른 변수에 할당해도 변수 이름만 달라질 뿐 같은 리스트를 가르킵니다. 복사가 아닌 참조가 되었기 때문입니다. 2차원 리스트도 마찬가지 입니다.

>>> a = [[10, 20], [30, 40]]
>>> b = a
>>> b[0][0] = 500
>>> a
[[500, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]

위와같이 a 객체를 b에 할당하고 b 안의 원소를 바꿨는데, a 안의 원소도 같이 바뀌는걸 볼 수 있습니다.

리스트에선 이 문제를 해결하기 위해 copy 메소드를 사용합니다.

>>> a = [[10, 20], [30, 40]]
>>> b = a.copy()
>>> b[0][0] = 500
>>> a
[[500, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]

그런데 여기선 copy를 사용해도 변화가 없습니다. 2차원 이상의 다차원 리스트에서는 완전 복사를 위해 copy 모듈의 deepcopy 메소드를 사용해야 합니다.

>>> import copy             # copy 모듈을 가져옴
>>> a = [[10, 20], [30, 40]]
>>> b = copy.deepcopy(a)    # copy.deepcopy 함수를 사용하여 깊은 복사
>>> b[0][0] = 500
>>> a
[[10, 20], [30, 40]]
>>> b
[[500, 20], [30, 40]]

좋은 웹페이지 즐겨찾기