리스트에서 특정 인덱스(사용자 지정 위치)에 해당하는 요소만 반복해야 하는 경우가 있습니다. 이럴 때는 간단한 for 반복문과 enumerate 함수를 활용해 인덱스를 확인하고, extend 메서드와 append 메서드를 조합하면 손쉽게 구현할 수 있습니다.
예제 코드
my_list = [34, 56, 77, 23, 31, 29, 62, 99]
print("The list is :")
print(my_list)
index_list = [3, 1, 4, 6]
my_result = []
for index, element in enumerate(my_list):
if index in index_list:
my_result.extend([element, element])
else:
my_result.append(element)
print("The result is :")
print(my_result)
실행 결과
The list is : [34, 56, 77, 23, 31, 29, 62, 99] The result is : [34, 56, 56, 77, 23, 23, 31, 31, 29, 62, 62, 99]
코드 설명
- 먼저 리스트
my_list를 정의하고 콘솔에 출력합니다. - 반복 대상이 될 인덱스들을 담은 정수 리스트
index_list를 정의합니다. - 최종 결과를 저장할 빈 리스트
my_result를 준비합니다. enumerate함수를 사용해 리스트를 순회하면서 각 요소와 그 인덱스를 동시에 가져옵니다.- 현재 인덱스가
index_list에 포함되어 있다면,extend메서드로 해당 요소를 두 번 추가해 반복 효과를 만듭니다. - 포함되어 있지 않다면,
append메서드로 요소를 한 번만 추가합니다. - 모든 요소를 처리한 후 최종 리스트가 콘솔에 출력됩니다.
핵심 포인트
- enumerate: 리스트를 순회하면서 인덱스와 값을 동시에 얻을 수 있어, 인덱스 기반 조건 처리에 매우 유용합니다.
- extend vs append:
append는 요소 하나를 그대로 추가하지만,extend는 iterable의 모든 요소를 개별적으로 추가합니다. 따라서[element, element]를 전달하면 같은 값이 두 번 삽입되어 원하는 반복 효과를 얻을 수 있습니다.
이처럼 enumerate와 리스트 메서드를 조합하면 복잡한 로직 없이도, 지정된 인덱스의 요소만 반복된 새로운 리스트를 간단하고 직관적으로 만들 수 있습니다.