"평탄화(flatten)"는 다차원 배열이나 리스트를 1차원 리스트로 펼치는 작업입니다.
Python에서 평탄화(flatten)하는 방법
1. 🔹 numpy.flatten() (배열 전용)
import numpy as np
arr = np.array([[1, 2], [3, 4]])
flat = arr.flatten()
print(flat) # [1 2 3 4]
✔️ 결과는 1차원 numpy.ndarray
2. 🔹 리스트 컴프리헨션
nested = [[1, 2], [3, 4]]
flat = [item for sublist in nested for item in sublist]
print(flat) # [1, 2, 3, 4]
✔️ 2차원 list만 가능(파이썬 기본문법).
3. 🔹 itertools.chain.from_iterable()
from itertools import chain
nested = [[1, 2], [3, 4]]
flat = list(chain.from_iterable(nested))
print(flat) # [1, 2, 3, 4]
✔️ 2차원 list만 가능( itertools 라이브러리 활용).
4. 🔹 재귀적으로 깊이 중첩된 리스트 평탄화 (2차원 이상)
def flatten_recursive(lst):
flat = []
for item in lst:
if isinstance(item, list):
flat.extend(flatten_recursive(item))
else:
flat.append(item)
return flat
nested = [1, [2, [3, 4]], 5]
print(flatten_recursive(nested)) # [1, 2, 3, 4, 5]