반응형
질문
파이썬에서 제너레이터 표현식과 리스트 컴프리헨션을 언제 사용해야 할까요?
# 제너레이터 표현식
(x*2 for x in range(256))
# 리스트 컴프리헨션
[x*2 for x in range(256)]
답변
John의 답변은 좋습니다 (리스트 컴프리헨션은 여러 번 반복해야 할 때 더 좋습니다). 그러나 리스트 메소드를 사용하려면 리스트를 사용해야 한다는 점도 유의해야 합니다. 예를 들어, 다음 코드는 작동하지 않습니다:
def gen():
return (something for something in get_some_stuff())
print gen()[:2] # 제너레이터는 인덱싱이나 슬라이싱을 지원하지 않습니다
print [5,6] + gen() # 제너레이터는 리스트에 추가할 수 없습니다
기본적으로, 한 번만 반복하는 경우 제너레이터 표현식을 사용하세요. 생성된 결과를 저장하고 사용하려면 리스트 컴프리헨션이 더 나은 선택일 것입니다.
두 가지 중에서 선택할 때 가장 일반적인 이유는 성능입니다. 그러나 내 조언은 걱정하지 말고 그냥 하나를 선택하면 됩니다. 프로그램이 너무 느리게 실행되는 것을 발견하면, 그때서야 코드를 튜닝하는 것에 대해 걱정하면 됩니다.
반응형
댓글