[Python] List Comprehension과 Generator Expression

당근먹는사람·2024년 12월 24일

Python

목록 보기
2/3

1. List Comprehension

nums = [i for i in range(10)]
print(nums)  # 출력: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2. Generator Expression

nums = (i for i in range(10))
print(nums)  # 출력: <generator object <genexpr> at 0x...>
print(list(nums))  # 출력: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

가장 큰 특징은 모든 메모리에 값을 전부 올리지 않는다.

즉 파일을 읽을 때에도

lines = (line.strip() for line in open('large_file.txt'))
for line in lines:
    print(line)  # 파일의 각 줄을 메모리 효율적으로 읽음

generator expression은 미리 모든 값을 계산하지 않고 필요할 때마다 값을 그때그때 계산하기 때문에 수행 시간이 긴 연산을 필요한 순간까지 늦출 수 있고 메모리를 절약할 수 있다.

결론

제너레이터는 대규모 데이터 처리와 메모리 효율성이 중요한 상황에서 강력한 도구.
리스트 컴프리헨션이 단기적이고 작은 데이터 세트에 적합하다면,
제너레이터는 대량의 데이터와 스트리밍 데이터에 이상적.

0개의 댓글