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
'Programming > Python' 카테고리의 다른 글
[Python] 코딩테스트에서 자주 사용되는 주요 라이브러리 (0) | 2021.08.12 |
---|---|
[Python] itertools 사용하기 (permutaions, product, combinations) (0) | 2021.08.09 |
[Python] map(): 리스트의 형식 변환(문자열->숫자 or 숫자->문자열) (0) | 2021.08.03 |
[Python] Counter: list 요소 개수 세어서 dictionary로 출력 (0) | 2021.07.11 |
[Python] 딕셔너리 dictionary (0) | 2021.07.11 |