Skip to content

KR_Comprehension

somaz edited this page Apr 21, 2025 · 3 revisions

Python Comprehension 개념 정리


1️⃣ List Comprehension

리스트를 간단하게 생성하는 방법입니다.

# 기본 형식
# [표현식 for 항목 in 반복가능객체 if 조건문]

# 예제 1: 0-9의 제곱 수 리스트
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 예제 2: 짝수만 포함하는 리스트
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]

# 예제 3: 중첩 반복문
matrix = [[i+j for j in range(3)] for i in range(3)]
# [[0,1,2], [1,2,3], [2,3,4]]

특징:

  • 간결한 리스트 생성
  • 조건문 포함 가능
  • 중첩 반복문 지원


2️⃣ Dictionary Comprehension

# 기본 형식
# {키_표현식: 값_표현식 for 항목 in 반복가능객체}

# 예제 1: 숫자:제곱 쌍의 딕셔너리
squares = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 예제 2: 조건문 포함
even_squares = {x: x**2 for x in range(5) if x % 2 == 0}
# {0: 0, 2: 4, 4: 16}

# 예제 3: 기존 딕셔너리 변환
prices = {'apple': 2.0, 'orange': 3.0, 'banana': 1.0}
doubled = {k: v*2 for k, v in prices.items()}
# {'apple': 4.0, 'orange': 6.0, 'banana': 2.0}

특징:

  • 키-값 쌍 생성
  • 기존 딕셔너리 변환
  • 조건부 필터링


3️⃣ Set Comprehension

# 기본 형식
# {표현식 for 항목 in 반복가능객체 if 조건문}

# 예제 1: 문자열의 고유 문자
chars = {c for c in 'hello world'}
# {'h', 'e', 'l', 'o', 'w', 'r', 'd', ' '}

# 예제 2: 조건문 포함
vowels = {c for c in 'hello world' if c in 'aeiou'}
# {'e', 'o'}

특징:

  • 중복 제거
  • 고유 요소 수집
  • 집합 연산 지원


4️⃣ Generator Comprehension

# 기본 형식
# (표현식 for 항목 in 반복가능객체 if 조건문)

# 예제 1: 제곱 수 생성
squares = (x**2 for x in range(10))
# 제너레이터 객체 반환

# 사용 예
for square in squares:
    print(square)  # 하나씩 생성하여 출력

특징:

  • 메모리 효율적
  • 지연 평가
  • 이터레이터 프로토콜


5️⃣ 중첩된 Comprehension

# 예제 1: 2차원 리스트 평탄화
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [x for row in matrix for x in row]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 예제 2: 조건문 포함한 중첩 컴프리헨션
result = [x+y for x in [1,2,3] for y in [10,20,30] if (x+y) % 2 == 0]

특징:

  • 복잡한 데이터 구조 처리
  • 다중 반복문 지원
  • 조건부 필터링


주요 팁

모범 사례:

  • 가독성을 고려하여 적절히 사용
  • 복잡한 컴프리헨션은 일반 반복문으로 작성
  • 제너레이터 컴프리헨션은 대용량 데이터 처리시 유용
  • 중첩된 컴프리헨션은 신중하게 사용


Clone this wiki locally