컴프리헨션 (Comprehension)
학습 목표
- 리스트 컴프리헨션의 구조와 동작 방식을 이해한다
- 조건 필터링과 중첩 컴프리헨션을 활용할 수 있다
- 딕셔너리와 집합 컴프리헨션을 사용할 수 있다
- 컴프리헨션의 적절한 사용 범위를 판단할 수 있다
왜 중요한가
컴프리헨션은 Python의 대표적인 관용 표현(Pythonic idiom)입니다. for 루프로 작성할 수 있는 데이터 변환을 한 줄로 간결하게 표현합니다. ML/DL 코드에서 데이터 전처리, 특성 추출, 결과 변환 등에 광범위하게 사용됩니다.리스트 컴프리헨션
기본 구조
조건 필터링
if만 있는 경우 뒤에 배치하고(필터링), if-else는 앞에 배치합니다(변환).중첩 컴프리헨션
딕셔너리 컴프리헨션
집합 컴프리헨션
제너레이터 표현식
소괄호()를 사용하면 제너레이터 표현식(Generator Expression)이 됩니다. 메모리를 절약하면서 지연 평가(Lazy Evaluation)를 수행합니다.
AI/ML에서의 활용
컴프리헨션이 for 루프보다 빠른가요?
컴프리헨션이 for 루프보다 빠른가요?
일반적으로 약간 더 빠릅니다. CPython에서 컴프리헨션은 내부적으로 최적화된 바이트코드를 생성합니다. 하지만 성능 차이보다는 가독성이 선택 기준이 되어야 합니다.
walrus 연산자(:=)와 함께 쓸 수 있나요?
walrus 연산자(:=)와 함께 쓸 수 있나요?
Python 3.8부터 가능합니다. 컴프리헨션 내에서 중간 계산 결과를 재사용할 때 유용합니다.
체크리스트
- 리스트 컴프리헨션의 구조를 정확히 작성할 수 있다
- 필터링(if)과 변환(if-else)의 위치 차이를 구분할 수 있다
- 딕셔너리, 집합 컴프리헨션을 사용할 수 있다
- 컴프리헨션의 가독성 한계를 인지하고 적절히 사용할 수 있다

