개요
이 튜토리얼에서는 여러 개의 하위 리스트(sub-list)로 구성된 리스트를 지정된 개수만큼 묶어서 하나의 리스트로 평탄화(flatten)하는 프로그램을 작성해 보겠습니다. 먼저 예시를 통해 문제를 명확히 이해해 보겠습니다.
입력
lists = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] number = 2
출력
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
위 예시에서는 2개의 하위 리스트씩 묶어 각 그룹을 하나의 평탄화된 리스트로 만들었습니다. 마지막 그룹에는 남은 요소들이 그대로 포함됩니다.
문제 해결 접근 방식
문제는 다음 단계를 거쳐 해결할 수 있습니다.
- 리스트와 그룹 크기(number)를 초기화합니다.
- 결과를 저장할 빈 리스트를 생성합니다.
- range(0, len(lists), number)를 사용하여 number 간격으로 반복합니다.
- 슬라이싱 lists[i:i+number]를 통해 해당 그룹에 속한 하위 리스트들을 가져옵니다.
- 그룹 내 모든 하위 리스트의 요소를 하나의 리스트로 병합한 뒤 결과 리스트에 추가합니다.
- 최종 결과를 출력합니다.
구현 예제
# 리스트와 그룹 크기 초기화
lists = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
number = 2
# 결과를 저장할 빈 리스트
result = []
# number 간격으로 반복하며 그룹 단위로 처리
for i in range(0, len(lists), number):
# 현재 그룹의 하위 리스트들을 하나로 병합하여 추가
result.append([element for sub_list in lists[i:i + number] for element in sub_list])
# 최종 결과 출력
print(result)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10]]
마무리
이번 튜토리얼에서는 슬라이싱과 리스트 컴프리헨션을 활용하여 중첩 리스트를 그룹 단위로 평탄화하는 방법을 알아보았습니다. 이 기법은 데이터 전처리나 배치(batch) 처리 등 다양한 상황에서 유용하게 활용될 수 있습니다. 내용에 대해 궁금한 점이 있다면 댓글로 남겨주세요.