Book/파이썬 코딩의 기술

[BW 32] 긴 리스트 컴프리헨션보다는 제네레이터 식을 사용하라

31514 2024. 11. 1. 16:10

리스트 컴프리헨션의 입력이 커지면 메모리를 상당히 많이 사용하고, 그로 인해 프로그램이 중단될 수 있다.

 

이 문제를 해결하기 위해 파이썬은 제네레이터 식을 제공한다.

제네레이터 식을 실행해도 출력 시퀀스 전체가 실체화되지 않고, 이터레이터가 생성된다.

it = (len(x) for x in open('my_file.txt'))

 

 

두 제네레이터 식을 합성할 수도 있다.

roots = ((x, x ** 0.5) for x in it)

 

 

다만 제네레이터가 반환하는 이터레이터에는 상태가 있기 때문에 한 번만 사용해야 한다.