PYTHON · 기초 문법
리스트 컴프리헨션 & 제너레이터
Python의 가장 Pythonic한 기법. 간결하고 빠른 컬렉션 생성.
기초 문법중급comprehensiongeneratordict-compwalrus:=
핵심 설명
Python의 가장 Pythonic한 기법. 간결하고 빠른 컬렉션 생성.
Python code
# 리스트 컴프리헨션
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 조건 필터
evens = [x for x in range(20) if x % 2 == 0]
# 중첩 컴프리헨션
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
flat = [x for row in matrix for x in row]
# 딕셔너리 컴프리헨션
words = ["python", "kotlin", "golang"]
word_len = {w: len(w) for w in words}
# {'python': 6, 'kotlin': 6, 'golang': 6}
# 세트 컴프리헨션 (중복 제거)
letters = {c for c in "programming" if c not in "aeiou"}
# 제너레이터 표현식 (메모리 효율)
gen = (x**2 for x in range(1_000_000)) # 즉시 계산 안 함
print(next(gen)) # 0
print(next(gen)) # 1
# sum()에 제너레이터 전달 (괄호 하나로)
total = sum(x**2 for x in range(100))
# walrus operator := (Python 3.8+)
data = [1, -2, 3, -4, 5]
positive = [y for x in data if (y := x * 2) > 0]
print(positive) # [2, 6, 10]학습 팁
제너레이터 표현식은 (), 리스트 컴프리헨션은 []입니다. 큰 데이터를 한 번만 순회하면 제너레이터가 메모리 효율적입니다.
주의할 점
중첩이 3단계 이상 되면 가독성이 급격히 떨어집니다. 이 경우 일반 for 루프나 함수로 분리하세요.
자주 묻는 질문
리스트 컴프리헨션 & 제너레이터란 무엇인가요?
Python의 가장 Pythonic한 기법. 간결하고 빠른 컬렉션 생성.
리스트 컴프리헨션 & 제너레이터 학습 시 주의할 점은 무엇인가요?
중첩이 3단계 이상 되면 가독성이 급격히 떨어집니다. 이 경우 일반 for 루프나 함수로 분리하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.