파이썬에서 중첩된 리스트(리스트 안에 리스트가 있는 구조)를 하나의 평탄한 리스트로 만드는 방법은 여러 가지가 있습니다. 가장 직관적인 방법은 두 개의 중첩 반복문을 사용하는 것입니다. 바깥쪽 반복문은 리스트의 각 하위 리스트를 하나씩 가져오고, 안쪽 반복문은 그 하위 리스트의 요소를 하나씩 꺼내어 새로운 리스트에 추가합니다.
1. 중첩 반복문 사용
L1=[[1,2],[3,4,5],[6,7,8,9]]
flat=[]
for i in L1:
for j in i:
flat.append(j)
print(flat)2. 제너레이터 함수 사용
두 번째 방법은 제너레이터(generator) 함수를 이용해 이터레이터를 생성한 뒤, 이를 리스트로 변환하는 것입니다. yield 키워드를 사용하면 메모리를 효율적으로 활용할 수 있습니다.
def flatten(list):
for i in list:
for j in i:
yield j
L1=[[1,2,3],[4,5],[6,7,8,9]]
flat=flatten(L1)
print(list(flat))3. itertools.chain() 사용 (가장 간결한 방법)
가장 컴팩트한 방법은 itertools 모듈의 chain() 메서드를 활용하는 것입니다. 특히 from_iterable() 함수는 리스트의 리스트를 한 줄로 처리할 수 있어 실무에서 널리 사용됩니다.
L1=[[1,2,3],[4,5],[6,7,8,9]] import itertools flat=itertools.chain.from_iterable(L1) print(list(flat))
실행 결과
위 세 가지 코드는 모두 동일하게 아래와 같은 평탄화된 리스트를 출력합니다.
[1, 2, 3, 4, 5, 6, 7, 8, 9]
정리하면, 간단한 경우에는 중첩 반복문으로 충분하지만, 대용량 데이터를 다루거나 가독성과 성능을 모두 고려한다면 itertools.chain.from_iterable()을 사용하는 것이 가장 효율적인 선택입니다.