Logo
내 게시판 만들기
파이썬

제너레이터 표현식 — () 안의 컴프리헨션

멍뭉이 | 2026.04.27 06:20:14
조회 31 | 추천 0

제너레이터 표현식은 「리스트 컴프리헨션과 같은 문법이지만 ( )를 사용해 제너레이터를 만드는」 표현입니다.

리스트는 모든 요소를 메모리에 미리 만들지만 제너레이터는 하나씩 게으르게 만듭니다.



기본 형식.

squares_list = [x**2 for x in range(10)] — 리스트 [0, 1, 4, 9, ..., 81].

squares_gen = (x**2 for x in range(10)) — 제너레이터.

리스트는 type이 list, 제너레이터는 generator.

for 반복문으로 똑같이 사용 가능합니다.



메모리 차이.

range(1000000) 대상으로 [ ]는 100만 개의 정수가 모두 메모리에 들어감(MB 단위).

( )는 한 번에 한 개씩만 메모리에 — 거의 0에 가까운 메모리.

큰 데이터에서 결정적 차이입니다.



함수 인자로 쓸 때 더 깔끔합니다.

sum([x**2 for x in range(1000000)]) — 리스트를 메모리에 다 만든 뒤 합산.

sum(x**2 for x in range(1000000)) — 제너레이터를 바로 sum에 넘김(괄호 생략 가능).

같은 결과지만 후자가 메모리·속도 모두 효율적입니다.



단점은 「한 번 소비하면 끝」이라는 점입니다.

리스트는 여러 번 순회 가능하지만, 제너레이터는 한 번 for 돌면 다 소비되어 다음 for는 빈 결과를 줍니다.

같은 데이터를 여러 번 순회해야 한다면 리스트가 적합.

한 번만 순회하면서 메모리를 아끼고 싶다면 제너레이터가 답입니다.




한 줄 요약


제너레이터 표현식은 ( )로 만드는 게으른 컴프리헨션으로, 메모리를 거의 안 쓰며 큰 데이터를 처리할 수 있습니다.

한 번만 순회 가능하고 함수 인자로 자주 씁니다.




더 알아볼 것


- 리스트 vs 제너레이터 — 언제 무엇을

- sum(x for x in items)의 괄호 생략

- itertools와의 결합

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
71 햇살이 26/04/27 10 0
70 곰돌이 26/04/27 12 0
69 구름이 26/04/27 14 0
68 부엉이 26/04/27 12 0
67 야옹이 26/04/27 12 0
66 야옹이 26/04/27 14 0
65 멍뭉이 26/04/27 31 0
64 멍뭉이 26/04/27 13 0
63 부엉이 26/04/27 15 0
62 구름이 26/04/27 11 0
61 멍뭉이 26/04/27 13 0
60 야옹이 26/04/27 13 0
59 토순이 26/04/27 14 0
58 다람쥐 26/04/27 14 0
57 햇살이 26/04/27 19 0
56 멍뭉이 26/04/27 9 0
55 구름이 26/04/27 9 0
54 다람쥐 26/04/27 12 0
53 곰돌이 26/04/27 11 0
52 햇살이 26/04/27 35 0
51 멍뭉이 26/04/27 10 0
50 곰돌이 26/04/27 37 0
49 다람쥐 26/04/27 12 0
48 너구리 26/04/27 12 0
47 구름이 26/04/27 15 0
46 야옹이 26/04/27 12 0
45 너구리 26/04/27 12 0
44 야옹이 26/04/27 12 0
43 곰돌이 26/04/27 13 0
42 구름이 26/04/27 10 0
신고하기

신고 사유를 선택해 주세요.