Python - 2차원 배열 선언

강현구·2022년 3월 13일
0

Python

목록 보기
19/21

Python의 2차원 배열

N x M 크기의 2차원 리스트를 사용해야 할 경우(초기화 할 경우) 다음과 같이 쓰기 쉽다.

array = [[0]*m]*n

array
>> [[0,0,0],[0,0,0],[0,0,0]]

물론 이 상태로만 놓고 보면 N x M 크기의 2차원 리스트가 정상적으로 만들어진 것 같이 보인다.
하지만 위와 같이 작성하면 전체 리스트 안에 포함되 있는 각각의 리스트는 모두 같은 객체로 인식된다.
다시말해 array[0] == array[1] == array[2] 이며,
예를들어 array[0][0] = 1로 값을 변경하면array[0][0] == array[1][0] == array[2][0] == 1 와 같이 한꺼번에 바뀌게 된다.
물론 의도하에 이렇게 2차원 배열을 만들 수도 있겠으나, 일반적으로는 각각의 요소가 다른 객체로 만들려는 의도이기 때문에 이는 올바른 방법이라고 할 수 없다.

따라서 2차원 배열을 만들 때는 다른 방법을 사용해야하며, 방법 중 하나로 list comprehension을 쓸 수도 있다.
위의 코드는 다음과 같이 작성하면 올바른 방법으로 생성된다.

array = [[0]*m for _ in range(n)]

array
>> [[0,0,0],[0,0,0],[0,0,0]]

이렇게 생성된 2차원 리스트는 원하는 위치만 따로 변경할 수 있게 된다.

profile
한걸음씩

0개의 댓글