Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python - 리스트 요소 개수만큼 값을 반복해 중첩 리스트 만드는 방법

리스트의 각 요소 위치(인덱스)에 해당하는 개수만큼 값을 반복하여 중첩 리스트(nested list)를 만들어야 하는 경우, 간단한 반복문과 리스트 컴프리헨션(list comprehension)을 활용하면 손쉽게 해결할 수 있습니다.


예를 들어 길이가 4인 리스트가 있다면, 첫 번째 항목은 1이 한 번, 두 번째 항목은 2가 두 번, 세 번째 항목은 3이 세 번 반복되는 형태의 중첩 리스트를 생성할 수 있습니다.


예제 코드

아래는 실제 동작을 보여주는 예제입니다.

my_list = [11, 25, 36, 24]
print("The list is :")
print(my_list)
for element in range(len(my_list)):
   my_list[element] = [element+1 for j in range(element+1)]

print("The resultant list is :")
print(my_list)

실행 결과

The list is :
[11, 25, 36, 24]
The resultant list is :
[[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

코드 설명

  • 먼저 정수 값으로 이루어진 리스트를 정의하고, 콘솔에 출력합니다.

  • len() 함수로 리스트의 길이를 구한 뒤, range()를 통해 각 인덱스를 하나씩 순회합니다.

  • 각 인덱스마다 리스트 컴프리헨션을 사용하여 '인덱스 + 1' 값을 '인덱스 + 1'번 반복하는 새로운 하위 리스트를 생성합니다.

  • 생성된 하위 리스트로 원본 리스트의 해당 위치 값을 덮어쓰고, 최종 결과 리스트를 콘솔에 출력합니다.


참고: enumerate를 활용한 대안

인덱스를 직접 다루지 않고 enumerate() 함수를 사용하면 코드를 더욱 파이썬답게 작성할 수 있습니다.

my_list = [11, 25, 36, 24]
result = [[i] * i for i, _ in enumerate(my_list, start=1)]
print(result)

이 방식은 원본 리스트의 값을 변경하지 않고 새로운 중첩 리스트를 반환하므로, 원본 데이터를 보존해야 하는 경우에 유용합니다.