inblog logo
|
devleekangho
    파이썬

    [Python] 제너레이터 표현식

    KangHo Lee's avatar
    KangHo Lee
    Jun 05, 2025
    [Python] 제너레이터 표현식
    Contents
    ✅ 제너레이터 표현식이란?🔹 문법🔸 예시 1: 제곱값 생성🔸 예시 2: 짝수만 필터링✅ 리스트 내포와의 차이점🔍 언제 쓰나요?

    ✅ 제너레이터 표현식이란?

    리스트 내포(list comprehension)과 비슷하지만, 메모리에 모든 값을 저장하지 않고 하나씩 생성해주는 문법입니다.

    🔹 문법

    (expression for item in iterable if 조건)
    ⚠️ [] 대신 ()를 사용합니다.

    🔸 예시 1: 제곱값 생성

    gen = (x * x for x in range(5)) print(gen) # <generator object ...> print(next(gen)) # 0 print(next(gen)) # 1 print(next(gen)) # 4

    🔸 예시 2: 짝수만 필터링

    evens = (x for x in range(10) if x % 2 == 0) for n in evens: print(n) # 0 2 4 6 8

    ✅ 리스트 내포와의 차이점

    구분
    리스트 내포 (List Comprehension)
    제너레이터 표현식 (Generator Expression)
    문법
    [x * x for x in range(5)]
    (x * x for x in range(5))
    결과
    리스트 반환
    제너레이터 반환
    메모리
    한 번에 모든 값 저장
    필요한 순간에 하나씩 생성 (메모리 절약)
    속도
    빠름 (작은 데이터에 적합)
    느릴 수 있음 (큰 데이터에 적합)
    💡
    필요한 순간에 하나씩 생성
    → 현재 위치(index같은 내부 상태)만 저장하고 next() 등으로 호출하면 알고리즘 실행해서 결과 반환

    🔍 언제 쓰나요?

    • 데이터가 크고, 한 번씩만 처리하면 되는 경우
    • 메모리를 아끼고 싶을 때
    • sum(), any(), all() 같이 반복만 필요한 경우
    total = sum(x * x for x in range(1000000)) # ✅ 효율적

     
    Share article
    Contents
    ✅ 제너레이터 표현식이란?🔹 문법🔸 예시 1: 제곱값 생성🔸 예시 2: 짝수만 필터링✅ 리스트 내포와의 차이점🔍 언제 쓰나요?

    devleekangho

    RSS·Powered by Inblog