백엔드 개발 · 기초
Python의 리스트 컴프리헨션과 제너레이터 표현식의 차이점은?
힌트 · 메모리 사용량과 지연 평가(lazy evaluation)를 비교해보세요.
메모리생성 시점이터레이터lazy evaluation대괄호 vs 괄호
모범답안
리스트 컴프리헨션과 제너레이터 표현식은 둘 다 반복 가능한 객체를 만드는 간결한 방법이지만, 중요한 차이점이 있습니다.
리스트 컴프리헨션은 대괄호 []를 사용하며, 생성 즉시 모든 요소를 메모리에 저장합니다. 따라서 큰 데이터를 처리할 때는 메모리 사용량이 많아질 수 있습니다.
반면, 제너레이터 표현식은 괄호 ()를 사용하고, 필요할 때마다 요소를 생성하는 지연 평가(lazy evaluation) 방식을 사용합니다. 즉, 모든 요소를 미리 메모리에 저장하지 않고, next() 함수를 통해 요청될 때만 값을 생성하여 반환합니다. 따라서 메모리 효율성이 훨씬 좋습니다.
결론적으로, 작은 데이터셋에는 리스트 컴프리헨션이 빠를 수 있지만, 큰 데이터셋에는 제너레이터 표현식이 메모리 측면에서 더 효율적입니다. 제너레이터는 이터레이터를 반환한다는 점도 기억해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.