Python Comprehension: 목록, Dict 및 Set Comprehension

더 깨끗하고 빠른 Python을 작성하세요. 실제 예제, 필터링 조건 및 중첩 루프가 포함된 마스터 목록, 사전 및 집합 이해입니다.

에디터에서 사용해 보세요

개요

컴프리헨션은 Python의 가장 사랑받는 기능 중 하나이며, 기존 반복 가능 항목에서 새 컬렉션(목록, 사전 및 세트)을 생성하기 위한 간결하고 읽기 쉬운 구문을 제공합니다. 여러 줄의 `for` 루프를 작성하고 수동으로 항목을 추가하는 대신 컴프리헨션을 사용하면 표현이 풍부한 단일 코드 줄에서 동일한 변환, 필터링 및 할당을 수행할 수 있습니다.

리스트 컴프리헨션은 `[반복 가능한 if 조건의 항목에 대한 표현식]`으로 구조화된 가장 일반적인 변형입니다. 내부적으로 Python은 거의 C 속도로 실행되도록 컴프리헨션을 최적화하며, 루핑은 기본 인터프리터에 의해 처리되기 때문에 종종 동등한 수동 'for' 루프보다 성능이 뛰어납니다. 섭씨 온도 목록을 화씨 온도로 변환하거나 사용자 기록 목록에서 특정 키를 추출하는 등 빠른 변환에 이상적입니다.

목록 외에도 Python은 사전 및 집합 이해를 지원합니다. 중괄호와 키-값 쌍(예: `{key: value for x in iterable}`)으로 정의된 사전 이해는 매핑 쌍을 반전하거나 메타데이터를 구문 분석하는 데 매우 유용합니다. 집합 내포는 중복 항목을 자동으로 제거하여 고유한 컬렉션을 생성합니다. 이해력은 엄청나게 강력하지만 개발자는 이를 지나치게 복잡하게 만드는 것을 피해야 합니다. 이해에 중첩된 루프나 복잡한 조건이 필요한 경우 일반적으로 기존 `for` 루프가 읽고 유지하기가 더 쉽습니다.

코드 및 실행 출력

목록 변환, 조건부 필터링 및 매핑 입력에서 사전 생성을 보여줍니다.

numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
터미널 출력
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

단계별 구현

  • 로그에서 빈 값 또는 유효하지 않은 데이터 필터링
  • API 페이로드를 키-값 데이터 매핑으로 매핑
  • 데이터베이스 행을 간단한 목록으로 빠르게 포맷

자주 묻는 질문

일반 루프보다 이해가 더 빠릅니까?

예, 대부분의 경우 Python 인터프리터 내에서 최적화된 C 코드로 반복이 처리되므로 더 빠릅니다.

항상 컴프리헨션을 사용해야 합니까?

아니요. 코드 가독성은 Python의 우선순위입니다. 이해력에 중첩된 논리가 있거나 한두 줄보다 긴 경우 전통적인 루프가 선호됩니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.