소개
Python 에서 리스트는 다른 리스트를 요소로 포함할 수 있으며, 이러한 리스트는 더 많은 리스트를 요소로 포함하여 중첩 구조를 형성할 수 있습니다. 중첩 리스트를 평탄화하는 과정은 모든 요소가 동일한 레벨에 있는 1 차원 리스트로 변환하는 것을 의미합니다. 이 챌린지에서는 중첩 리스트를 재귀적으로 평탄화하는 함수를 작성해야 합니다. 즉, 깊이 평탄화 (deep flatten) 하는 함수를 작성해야 합니다.
깊이 평탄화 리스트
deep_flatten(lst) 함수를 작성하세요. 이 함수는 리스트 lst를 인수로 받아 lst의 깊이 평탄화된 버전을 반환합니다. 이 함수는 재귀 (recursion) 를 사용하고, 요소가 반복 가능한지 확인하기 위해 collections.abc.Iterable과 함께 isinstance() 함수를 사용해야 합니다. 요소가 반복 가능하다면, 함수는 해당 요소에 deep_flatten()을 재귀적으로 적용해야 합니다. 그렇지 않으면, 함수는 해당 요소만 포함하는 리스트를 반환해야 합니다.
from collections.abc import Iterable
def deep_flatten(lst):
return ([a for i in lst for a in
deep_flatten(i)] if isinstance(lst, Iterable) else [lst])
deep_flatten([1, [2], [[3], 4], 5]) ## [1, 2, 3, 4, 5]
요약
이 챌린지에서는 재귀와 collections.abc.Iterable과 함께 isinstance() 함수를 사용하여 리스트를 깊이 평탄화하는 방법을 배웠습니다. 이 기술은 리스트의 리스트와 같은 중첩된 데이터 구조를 처리할 때 유용할 수 있습니다.