리스트에서 반복해서 나타나야 하는 인덱스 값을 구해야 할 때, 리스트 컴프리헨션(list comprehension)과 enumerate 함수를 함께 사용하면 간단하게 해결할 수 있습니다.
예를 들어 리스트의 각 요소 값만큼 해당 요소의 인덱스를 반복해서 새로운 리스트를 만드는 경우에 유용하게 활용됩니다.
예제 코드
다음은 이를 구현한 예제입니다.
my_list = [4, 0, 3, 1]
print("The list is :")
print(my_list)
my_result = [element for sub in ([index] * element for index, element in enumerate(my_list)) for element in sub]
print("The result is :")
print(my_result)실행 결과
The list is : [4, 0, 3, 1] The result is : [0, 0, 0, 0, 2, 2, 2, 3]
코드 설명
리스트를 정의한 뒤 콘솔에 출력합니다.
리스트 컴프리헨션을 사용하여 리스트의 인덱스 값을 순회하며 처리합니다.
enumerate 함수는 리스트를 순회하면서 각 요소에 인덱스를 함께 제공하며, 이를 통해
[index] * element로 인덱스를 요소 값만큼 반복한 시퀀스를 생성합니다.생성된 결과는 변수 my_result에 할당됩니다.
최종 결과가 콘솔에 출력으로 표시됩니다.
위 예제에서 인덱스 0은 값 4만큼 네 번 반복되고, 인덱스 1은 값 0이므로 생략되며, 인덱스 2는 세 번, 인덱스 3은 한 번 반복되어 최종 결과 리스트가 완성됩니다.