자기계발
Python 2차원 리스트(list) 초기화하기
패스자
2023. 10. 25. 19:39
요소의 개수를 미리 알고있는 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]]