>백엔드 개발 >파이썬 튜토리얼 >Python에서 목록 목록을 효율적으로 평면화하려면 어떻게 해야 합니까?

Python에서 목록 목록을 효율적으로 평면화하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-30 18:14:10419검색

How Can I Efficiently Flatten a List of Lists in Python?

목록 목록 평면화

목록 목록이 있고 이를 단일 평면 목록으로 변환하려고 합니다. 예를 들어, 다음이 있을 수 있습니다.

[
    [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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.