본문 바로가기
Python/Python FAQ

Python 제너레이터 표현식 대 리스트 내장, Generator expressions vs. list comprehensions

by 베타코드 2023. 10. 13.
반응형

질문


파이썬에서 제너레이터 표현식과 리스트 컴프리헨션을 언제 사용해야 할까요?

# 제너레이터 표현식
(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() # 제너레이터는 리스트에 추가할 수 없습니다

기본적으로, 한 번만 반복하는 경우 제너레이터 표현식을 사용하세요. 생성된 결과를 저장하고 사용하려면 리스트 컴프리헨션이 더 나은 선택일 것입니다.

두 가지 중에서 선택할 때 가장 일반적인 이유는 성능입니다. 그러나 내 조언은 걱정하지 말고 그냥 하나를 선택하면 됩니다. 프로그램이 너무 느리게 실행되는 것을 발견하면, 그때서야 코드를 튜닝하는 것에 대해 걱정하면 됩니다.

반응형

댓글