안녕하세요. Harry입니다.
본 포스팅의 목적은, 코딩테스트를 준비함에 있어 스스로 공부한 지식을 정리하고자 합니다.
배경 : 2차원 리스트를 생성하는 다양한 방법이 있는데, 방법에 따라 리스트 내 각 요소의 인덱스가 중복되는 경우가 있어 활용 시 혼란스러운 상황 경험.
1. 리스트 인덱스가 중복하는 경우
duplication = [[0]] * 5
duplication[0].append(1)
print(duplication)
위와 같이 duplication 이라는 2차원리스트를 생성한 후 인덱스가 0인 내부 리스트에 1을 더한 경우 아래와 같이 출력될 것이라 기대했습니다.
[[0, 1], [0], [0], [0], [0]]
하지만 실제 출력 결과는 아래와 같습니다.
[[0, 1], [0, 1], [0, 1], [0, 1], [0, 1]]
2차원 리스트의 영역을 넓히고자 할 때, 단순히 원하는 양만큼 곱해준다면 인덱스가 중복되는 것으로 인식됩니다.
그렇기 때문에 인덱스 중복을 피하기 위해선 아래와 같이 작성해야합니다.
2. 리스트 인덱스가 중복하지 않는 경우(반복문 활용)
Non_duplication = [[0] for i in range(5)]
Non_duplication[0].append(1)
print(Non_duplication)
단순 곱이 아닌 반복문을 활용하여 작성해 준다면, 인덱스가 중복하지 않습니다.
[[0, 1], [0], [0], [0], [0]]
3. 리스트 인덱스가 중복하지 않는 경우(단순 곱 + 반복문)
만약 1,2번을 동시에 쓴다면 어떻게 될까요??
Non_duplication = [[0]*5 for i in range(5)]
Non_duplication[0].append(1)
print(Non_duplication)
2번 식에서 [0]*5를 작성하여 추가해보았습니다.
[[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
위와 같이 리스트 인덱스가 중복되지 않는 것으로 확인했습니다.
감사합니다.
'Development > Python' 카테고리의 다른 글
[코딩테스트 대비] python 메서드 및 라이브러리 활용 정리 (1) | 2023.05.06 |
---|---|
[Python] 문자열을 한 줄에 출력하는 방법(print) (0) | 2023.04.01 |
[독학 파이썬] 파이썬 ord 메서드 활용법 정리(feat.chr) (2) | 2023.02.01 |
[Python] input함수 대신 sys.stdin.readline 활용하기 (0) | 2022.12.30 |
[Python] input 함수 활용하여 원하는 만큼 리스트 내 원소 자동생성하기 (0) | 2022.12.30 |