목록 목록 평면화
목록 목록이 있고 이를 단일 평면 목록으로 변환하려고 합니다. 예를 들어, 다음이 있을 수 있습니다.
[ [1, 2, 3], [4, 5, 6], [7], [8, 9] ]
그리고 목표는 다음과 같습니다.
[1, 2, 3, 4, 5, 6, 7, 8, 9]
해결책
중첩 목록 이해는 다음을 제공합니다. 목록 목록을 평면화하는 솔루션:
flat_list = [x for xs in xss for x in xs]
이 코드 xss의 각 하위 목록과 해당 요소를 반복하여 flat_list에 결과를 누적합니다.
또는 조인과 함께 목록 이해를 사용하여 평면화하거나 sum() 함수를 사용할 수 있습니다.
flat_list = [j for i in xss for j in i] flat_list = sum(xss, []) # or sum(xss)
성능 비교
이러한 방법을 사용하는 동안 동일한 결과를 제공하더라도 성능은 다양합니다. 벤치마크는 특히 큰 입력 목록의 경우 중첩된 목록 이해가 다른 접근 방식보다 훨씬 더 빠르다는 것을 보여줍니다.
이러한 뛰어난 성능은 목록 이해가 단일 목록을 한 번 생성하고 각 항목을 한 번만 복사한다는 사실에서 비롯됩니다. 이와 대조적으로 조인 기반 방법은 수많은 중간 목록을 생성하는 반면 sum() 접근 방식은 더 복잡한 작업을 포함합니다.
재귀 접근 방식
목록 목록이 임의의 중첩 깊이가 있는 경우 완전한 병합을 위해 재귀적 접근 방식이 필요할 수 있습니다. 다음 기능을 고려하십시오.
def flatten_completely(xss): return [x for elem in xss for x in flatten_completely(elem) if not isinstance(x, list)] if isinstance(xss, list) else [xss]
위 내용은 Python에서 목록 목록을 효율적으로 평면화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!