이 튜토리얼에서는 중첩 리스트(리스트 안에 리스트가 포함된 구조)에서 특정 요소가 속한 하위 리스트의 인덱스를 찾는 프로그램을 작성해 보겠습니다. 먼저 예시를 통해 문제를 명확히 이해해 보겠습니다.
입력
nested_list = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
출력
Index of 7:- 2 Index of 5:- 1 Index of 3:- 0
예를 들어 숫자 7은 세 번째 하위 리스트 [6, 7, 8, 9]에 포함되어 있으므로 인덱스 2가 반환됩니다. 마찬가지로 5는 두 번째 하위 리스트에, 3은 첫 번째 하위 리스트에 속합니다.
문제 해결 접근 방식
가장 간단하고 널리 사용되는 방법은 중첩 반복문을 활용하는 것입니다. 다음 단계를 따라 해결할 수 있습니다.
- 중첩 리스트를 초기화합니다.
- 인덱스를 기준으로 바깥 리스트를 순회합니다.
- 각 하위 리스트를 순회하면서 찾고자 하는 요소와 일치하는지 확인합니다.
- 요소를 찾으면 해당 하위 리스트의 인덱스를 출력하고 반복문을 종료합니다.
예제 코드
# 리스트 초기화
nested_list = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# 인덱스를 찾는 함수
def find_index(element):
# 요소 발견 여부를 추적하는 플래그 초기화
is_found = False
# 바깥 리스트 순회
for i in range(len(nested_list)):
# 하위 리스트 순회
for j in range(len(nested_list[i])):
# 요소 일치 여부 확인
if nested_list[i][j] == element:
# 요소가 포함된 하위 리스트의 인덱스 출력
print(f'Index of {element}: {i}')
# 플래그를 True로 변경
is_found = True
# 내부 반복문 종료
break
# 외부 반복문 종료
if is_found:
break
# 요소를 찾지 못한 경우 처리
if not is_found:
print("Element is not present in the list")
find_index(7)
find_index(5)
find_index(3)
실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Index of 7: 2 Index of 5: 1 Index of 3: 0
더 간결한 방법: enumerate 활용하기
range(len()) 조합 대신 enumerate와 in 연산자를 사용하면 코드를 훨씬 더 파이썬답게 작성할 수 있습니다.
def find_index(element):
for i, sub_list in enumerate(nested_list):
if element in sub_list:
print(f'Index of {element}: {i}')
return
print("Element is not present in the list")
이 방법은 가독성이 뛰어나고 코드 길이도 크게 줄어들기 때문에 실무에서 더 권장됩니다.
마무리
이처럼 중첩 반복문이나 enumerate를 활용하면 중첩 리스트에서 원하는 요소가 어느 하위 리스트에 있는지 쉽게 찾을 수 있습니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨 주세요.