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 반복] |
조건에 따라 값 다르게 선택 |
오늘을 마치며
컬렉션 자료형은 데이터를 담는 그릇,
컴프리헨션은 그걸 효율적으로 채우는 도구다.
이 두 가지의 조화로 내 코드도 한층 더 단정해지길 기대한다.