Programming/Python

[Python] 2차원 리스트 초기화하기

당닝 2021. 8. 11. 17:42
728x90

요소의 개수를 미리 알고있는 1차원 리스트를 선언할 때는 다음과 같이 선언한다.

# 5개 요소의 1차원 리스트 만들기

n = 5
a = [0]*n

print(a) # >>> [0, 0, 0, 0, 0]

 

하지만 2차원 리스트를 선언할 때 같은 방법을 사용하면 오류가 난다.

# 5*5 요소의 2차원 리스트 만들기(잘못된 방법)

n = 5
a = [[0] * n] * n

print(a) # >>> [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

 

출력은 잘 되는 듯 보이지만, a[1][2]를 1로 바꾸려고 한다면, 리스트가 이상하게 바뀌어버린다.

a[1][2] = 1

print(a) # >>> [[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0]]

 

이유는 값을 할당하는 것이 아닌, 리스트를 복사하기 때문에 나타나는 오류라고 하는데,, 자세한 이유는 코딩테스트를 할 때 중요하지 않으니 바로 제대로 초기화하는 방법을 알아보자.

 

>>> for문을 이용하면 된다!

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

# 5*5 요소의 2차원 리스트 만들기

n = 5
a = [[0] * n for _ in range(n)]

print(a) # >>> [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

 

728x90