PYTHON · 컬렉션
제너레이터 표현식
제너레이터 표현식으로 메모리 효율적인 지연 평가 이터레이터를 만듭니다.
컬렉션중급generator제너레이터지연 평가lazy
핵심 설명
제너레이터 표현식으로 메모리 효율적인 지연 평가 이터레이터를 만듭니다.
Python code
# 제너레이터 표현식 vs 리스트 컴프리헨션
import sys
list_comp = [x**2 for x in range(10000)]
gen_expr = (x**2 for x in range(10000))
print(f"리스트: {sys.getsizeof(list_comp):,} bytes")
print(f"제너레이터: {sys.getsizeof(gen_expr)} bytes")
# 함수 인자로 직접 전달 (괄호 생략 가능)
total = sum(x**2 for x in range(100))
print(f"제곱의 합: {total}")
exists = any(x > 50 for x in [10, 20, 60, 30])
print(f"50 초과 존재: {exists}") # True
# 체이닝
lines = [" hello ", "", " world ", " ", "python"]
cleaned = list(
filter(None, (line.strip() for line in lines))
)
print(cleaned) # ['hello', 'world', 'python']
# 대용량 파일 처리 패턴
# total_size = sum(
# os.path.getsize(f)
# for f in glob.glob("**/*.py", recursive=True)
# )학습 팁
함수의 유일한 인자가 제너레이터 표현식이면 바깥 괄호를 생략할 수 있습니다: sum(x for x in data).
주의할 점
제너레이터는 한 번만 순회 가능합니다. 여러 번 순회하려면 리스트로 변환하거나 새 제너레이터를 생성하세요.
자주 묻는 질문
제너레이터 표현식란 무엇인가요?
제너레이터 표현식으로 메모리 효율적인 지연 평가 이터레이터를 만듭니다.
제너레이터 표현식 학습 시 주의할 점은 무엇인가요?
제너레이터는 한 번만 순회 가능합니다. 여러 번 순회하려면 리스트로 변환하거나 새 제너레이터를 생성하세요.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.