4. 2차원 리스트의 할당과 복사 알아보기
- 2차원 리스트를 다른 변수에 할당해도 변수 이름만 달라질 뿐 리스트는 같다.(같은 객체)
>>> a = [[10, 20], [30, 40]] >>> b = a >>> b[0][0] = 500 >>> a [[500, 20], [30, 40]] >>> b [[500, 20], [30, 40]]
- 2차원 리스트를 만든 뒤, 다른 변수에 할당하고 요소를 변경했더니 두 리스트에 모두 반영되었다.
- 그런데 리스트 a를 copy 메서드로 b에 복사한 뒤 b의 요소를 변경해도, 리스트 a와 b에 모두 반영된다.
>>> a = [[10, 20], [30, 40]] >>> b = a.copy() >>> b[0][0] = 500 >>> a [[500, 20], [30, 40]] >>> b [[500, 20], [30, 40]]
- 2차원 이상의 다차원 리스트에서 리스트를 완전히 복사하려면, copy 메서드 대신 copy 모듈의 deecopy 함수를 사용해야 한다.
- 이제 리스트 b의 요소를 변경해도 리스트 a에는 영향을 미치지 않는다.>>> a = [[10, 20], [30, 40]] >>> import copy # copy 모듈을 가져옴 >>> b = copy.deepcopy(a) # copy.deepcopy 함수를 사용하여 깊은 복사 >>> b[0][0] = 500 >>> a [[10, 20], [30, 40]] >>> b [[500, 20], [30, 40]]
- copy.deepcopy 함수는 중첩된 리스트(튜플)에 들어있는 모든 리스트(튜플)를 복사하는 깊은 복사(deep copy)를 해준다.
※ 2차원 리스트는 세로 → 가로 순으로 접근한다는 점을 기억하기
'Python 코딩도장' 카테고리의 다른 글
파이썬 코딩도장 Unit 24 정리(2) - 문자열 서식 지정자, 포매팅 사용 (0) | 2022.01.29 |
---|---|
파이썬 코딩도장 Unit 24 정리(1) - 문자열 조작 (0) | 2022.01.28 |
파이썬 코딩도장 Unit 23 정리(3) - 반복문으로 리스트 생성 (0) | 2022.01.26 |
파이썬 코딩도장 Unit 23 정리(2) - 2차원 리스트에서의 반복문 사용 (0) | 2022.01.25 |
파이썬 코딩도장 Unit 23 정리(1) - 2차원 리스트 생성 후 요소에 접근하기 (0) | 2022.01.24 |