리스트가 서로 영향을 안미치게 만들고 싶습니다.
조회수 411회
ex = [1]
EX = ex
EX[0] = ex[0] + 1
위와 같이 했을때 EX[0]
, ex[0]
둘다 2가 됩니다.
저는 EX[0]
은 2가 되지만 ex[0]
은 1을 유지하게 만들고 싶습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
ex
와EX
모두 동일한 리스트 객체를 가리키고 때문에 발생하는 현상입니다.
리스트 요소를 복제하여 새로운 리스트 객체를 생성하면 됩니다.보통 두 가지 방식을 많이 이용합니다.
copy
메서드를 이용하는 방법EX = ex.copy()
슬라이싱을 이용하는 방법
EX = ex[:]
만약 리스트 내부에 다른 뮤터블 타입의 객체를 포함한 경우에는
deepcopy
가 필요할 수도 있습니다.
deepcopy
는 리스트 내부의 모든 요소들을 재귀적으로 복사합니다.import copy a = [[1, 2], [3, 4]] b = a.copy() c = copy.deepcopy(a) a[0][0] = 0 print(a) # [[0, 2], [3, 4]] print(b) # [[0, 2], [3, 4]] print(c) # [[1, 2], [3, 4]]
댓글 입력