중첩 목록 이해: 구문 분석
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!