Python 2차원 배열 선언 시 * 연산자 사용
예제 코드
a = [[1, 2, 3, 4], [5, 0, 7, 8], [4, 5, 2, 0]]
b = [[0] * 4] * 3
c = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
print('a : ', a)
print('b : ', b)
print('c : ', c)
print(a[1] == a[2])
b[1][1] = a[1][3]
print(b)
print(b[1] == b[2])
c[1][1] = a[1][3]
print(c)
print(c[1] == c[2])파이썬에서 2차원 배열 문제를 해결할 때
이중 리스트 구조의 데이터구조를 많이 활용한다.
0으로 초기화 되는 배열을 선언할 때,
b처럼 선언하면 동일한 리스트로 인식되어버려서
b[0], b[1]의 eq 연산이 True를 반환하고
b[0][2]의 값을 변경해도 그대로 b[1], b[2]...에 반영된다.
때문에 * 를 지양하고 for 문을 돌면서 선언해주는 것이 바람직함.
출력 결과
a : [[1, 2, 3, 4], [5, 0, 7, 8], [4, 5, 2, 0]]
b : [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
c : [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
False
[[0, 8, 0, 0], [0, 8, 0, 0], [0, 8, 0, 0]]
True
[[0, 0, 0, 0], [0, 8, 0, 0], [0, 0, 0, 0]]
False
댓글
댓글 쓰기