안녕하세요, MoonLight입니다.
파이썬을 조금 써보신 분이라면 List Comprehension이라는 단어를 들어보셨을 겁니다.
생소하게 느껴질 수도 있지만, 사실 매일 쓰는 for 루프를 한 줄로 줄여주는 아주 강력한 문법이에요.
List Comprehension이라는 용어는 몰라도 코드를 보면, '아! 이거~!' 하실겁니다.
오늘은 List Comprehension이 무엇인지, 언제 쓰면 좋은지 알아보도록 하겠습니다.
1. List Comprehension
간단히 말해, List Comprehension은 for 문과 if 조건문을 이용해 리스트를 간결하게 생성하는 문법입니다.
이름 그대로 "리스트를 구성(Comprehend)한다"는 의미죠.
보통 리스트를 만들 때는 이렇게 작성합니다:
squares = []
for x in range(10):
squares.append(x * x)
하지만 리스트 컴프리헨션을 쓰면 이렇게 됩니다:
squares = [x * x for x in range(10)]
2. 문법 구조
List Comprehension의 기본 구조는 다음과 같습니다.
[표현식 for 변수 in iterable if 조건문]
3. 다양한 예제
3.1. 기본적인 변환
numbers = [1, 2, 3, 4, 5]
doubled = [n * 2 for n in numbers]
print(doubled)
결과 [2, 4, 6, 8, 10]
3.2. 조건문 추가
evens = [n for n in range(10) if n % 2 == 0]
print(evens)
결과 [0, 2, 4, 6, 8]
3.3. 중첩 for 문
pairs = [(x, y) for x in range(3) for y in range(2)]
print(pairs)
결과
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
3.4. 문자열 처리
word = "Python"
upper_chars = [ch.upper() for ch in word] print(upper_chars)
결과
['P', 'Y', 'T', 'H', 'O', 'N']
3.5. 딕셔너리 & 집합도 가능
# 딕셔너리 컴프리헨션
squares = {x: x * x for x in range(5)}
print(squares)
결과 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
# 집합 컴프리헨션
unique = {x % 3 for x in range(10)}
print(unique)
결과
{0, 1, 2}
4. 활용법
4.1. 데이터 필터링
리스트에서 특정 조건에 맞는 값만 뽑아낼 때 유용합니다.
4.2. 데이터 변환
원소에 연산을 적용해 새로운 리스트로 만들 때 간단하게 쓸 수 있습니다.
4.3. 차원 리스트 다루기
행렬을 평탄화(flatten)하거나 특정 원소만 뽑을 때 깔끔합니다
matrix = [[1, 2], [3, 4], [5, 6]]
flat = [num for row in matrix for num in row]
print(flat)
결과
[1, 2, 3, 4, 5, 6]
5. 장단점
5.1. 장점
간결성 : for 루프 몇 줄이 한 줄로 줄어듭니다.
가독성 : 익숙해지면 코드 의도가 한눈에 들어옵니다.
파이썬스러움(Pythonic) : 파이썬 커뮤니티에서 권장하는 작성 방식이에요.
5.2. 단점
과도한 중첩 : for와 if가 복잡하게 얽히면 오히려 가독성이 떨어집니다.
디버깅 어려움 : 한 줄에 다 들어있다 보니 중간 값을 확인하기 힘듭니다.
남용 위험 : 무조건 한 줄로 줄이는 게 좋은 건 아니에요. 가독성이 최우선입니다.
'Development Tip' 카테고리의 다른 글
Python enum 제대로 써보기: 상수 관리의 깔끔한 해법 (0) | 2025.09.14 |
---|---|
Python - zip (0) | 2025.09.14 |
HuggingFace의 Cache Folder 변경하기 (2) | 2025.07.20 |
Poetry vs Anaconda (2) | 2025.07.12 |
"보일러플레이트 Code"란? (0) | 2025.04.05 |