>백엔드 개발 >파이썬 튜토리얼 >중첩 목록 이해는 어떻게 Python에서 목록을 평면화합니까?

중첩 목록 이해는 어떻게 Python에서 목록을 평면화합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-04 06:07:12227검색

How Does Nested List Comprehension Flatten a List in Python?

중첩 목록 이해: 구문 분석

Python에서 목록 이해는 기존 목록을 기반으로 새 목록을 생성하는 간결한 방법입니다. 하나. 그러나 중첩 목록 이해의 경우 구문이 약간 혼란스러울 수 있습니다.

다음 스니펫을 고려하세요.

a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]

이 코드는 중첩 목록 a를 평면화된 목록 b로 변환합니다. a의 모든 요소를 ​​포함합니다. 이것이 어떻게 작동하는지 이해하기 위해 구문을 분석해 보겠습니다.

[x for xs in a for x in xs]

이것은 2단계 중첩 이해입니다. 본질적으로 다음과 같습니다.

# Loop over the outer list
for xs in a:
    # Loop over the inner list
    for x in xs:
        # Add x to the new list b
        b.append(x)

즉, 먼저 외부 목록 a를 반복하고 각 하위 목록을 변수 xs에 할당한 다음 하위 목록을 반복하여 각 요소를 변수 x에 할당합니다. 각 요소 x에 대해 이를 새 목록 b에 추가합니다.

이 언롤링 프로세스는 루프가 작성된 순서를 따릅니다. 가장 바깥쪽 루프가 가장 느리게 변하고 내부 루프가 그 뒤를 따릅니다. 이것이 PEP202에서 언급된 "Right One" 원칙으로, 가장 안쪽 루프에서 가장 빠르게 변하는 인덱스로 컴프리헨션을 작성해야 한다는 것입니다.

이 원리를 이해하면 복잡한 중첩 목록 컴프리헨션도 자신 있게 해독할 수 있습니다. .

위 내용은 중첩 목록 이해는 어떻게 Python에서 목록을 평면화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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