Comprehension

컴프리헨션과 컬렉션의 찰떡궁합

Jun 5, 2025

🎀짧고 예쁜 코드의 비밀✨

컴프리헨션(comprehension)은 파이썬의 간결하고 직관적인 문법 중 하나로,
데이터를 짧은 코드로 쉽게 생성하거나 가공할 수 있게 해준다.

가독성과 효율성 모두 챙길 수 있는 파이썬의 매력적인 기능이다.

단, 너무 복잡하게 쓰면 오히려 안 읽히는 코드가 되기에
상황에 맞게 적절히 사용해야 한다.


1. 리스트 컴프리헨션

[표현식 for 변수 in 반복가능한_객체 if 조건]

# 1~10 중 짝수만 제곱
squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(squares)  # [4, 16, 36, 64, 100]


2. 튜플 컴프리헨션 ❌ (직접 지원 안 됨)

튜플은 리스트처럼 직접 컴프리헨션 문법이 없어서,
tuple()로 리스트 컴프리헨션을 감싸는 방식으로 사용한다.

# 튜플로 만들기
evens = tuple(x for x in range(10) if x % 2 == 0)
print(evens)  # (0, 2, 4, 6, 8)

3. 딕셔너리 컴프리헨션

{키_표현식: 값_표현식 for 변수 in 반복가능한_객체 if 조건}

# 1~5의 숫자를 제곱한 딕셔너리
squares = {x: x**2 for x in range(1, 6)}
print(squares)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

4. 집합(set) 컴프리헨션

{표현식 for 변수 in 반복가능한_객체 if 조건}

# 중복 없이 짝수만 추출
evens = {x for x in range(10) if x % 2 == 0}
print(evens)  # {0, 2, 4, 6, 8}

5. 조건문만 있는 컴프리헨션 (삼항연산 포함)

[값1 if 조건 else 값2 for 변수 in 반복가능한_객체]

# 짝수면 그대로, 홀수면 -1로
result = [x if x % 2 == 0 else -1 for x in range(1, 6)]
print(result)  # [-1, 2, -1, 4, -1]

6. 최종 정리

종류 기본 문법 비고
리스트 [표현식 for 변수 in 반복 if 조건] 가장 많이 사용
튜플 tuple(표현식 for 변수 in 반복 if 조건) 리스트 컴프리헨션 변형
딕셔너리 {키:값 for 변수 in 반복 if 조건} key:value 쌍 생성
집합 {표현식 for 변수 in 반복 if 조건} 중복 자동 제거
조건 표현식 [A if 조건 else B for 변수 in 반복] 조건에 따라 값 다르게 선택

오늘을 마치며

컬렉션 자료형은 데이터를 담는 그릇,
컴프리헨션은 그걸 효율적으로 채우는 도구다.

이 두 가지의 조화로 내 코드도 한층 더 단정해지길 기대한다.