https://docs.python.org/3/tutorial/classes.html#generator-expressions
• 제너레이터 표현식 정리(리스트 컴프리헨션의 괄호만 바꾼 형태):

  • 문법:
    • (식 for 항목 in 반복자 if 조건 ...)
    • 리스트 컴프는 […], 제너레이터 표현식은 (…).
  • 특징:
    • 값을 하나씩 즉시 생성하며, 별도 메모리 리스트를 만들지 않아 메모리 친화적.
  • 사용 시점:
    • 바로 다른 함수에 넘길 때가 대표적(sum, max, any, all, join 등).
  • 예시:
    • sum(i*i for i in range(10)) → 제곱 합
    • sum(x*y for x, y in zip(xvec, yvec)) → 내적
    • set(word for line in page for word in line.split()) → 중복 제거된 단어 모음
    • max((s.gpa, s.name) for s in graduates) → 최고 GPA 학생 찾기
    • list(data[i] for i in range(len(data)-1, -1, -1)) → 문자열 뒤집어 리스트 만들기
  • 장단점:
    • 컴팩트하고 지연 계산으로 메모리 절약. 하지만 여러 번 순회하려면 list(…)로 물리적 시퀀스로 변환해야 합니다.
gen = (i*i for i in range(3))
 
print(list(gen)). #한 번 실행이 되어서 결과가 나오면 제너레이터는 끝남
# [0, 1, 4]
print(list(gen)) # 동일 코드 실행하니 비어있는 것을 확인 / 필요한 경우 변수에 할당하여 결과를 물리화 해야함
# []

← python 3.14으로