Backend/Python

[Python] generator

sangwonYoon 2023. 3. 7. 00:04

파이썬의 list 자료형과 비슷한 듯 하지만 메모리 측면에서 효율적인 generator에 대해서 알아보자.


yield 키워드를 활용하여 iterable한 객체인 generator 생성한다.

 

list는 모든 element를 메모리에 올려놓아야 하는 반면

generatoryield 키워드를 활용하여 element가 사용되는 시점에 하나씩 메모리에 올려놓는다.

따라서 대용량 파일을 읽거나 스트림 데이터를 처리하는 경우, 메모리 효율 측면에서 유용하다.

 

def create_generator(value):
	for i in range(value):
		yield i

g = create_generator(10)
print(g)
# <generator object create_generator at 0x7febc80e3eb0>
for i in g:
	print(i)
# 출력:
# 0
# 1
# ...
# 9

 

generator comprehension

list comprehension과 유사한 형태이지만, [] 대신 ()를 사용하여 표현한다.

gen_ex = (n*n for n in range(10))
print(list(gen_ex))
# 출력: [0, 1, 4, 9, 16, 25, ..., 81]

'Backend > Python' 카테고리의 다른 글

[Python] 파이썬 class의 특징  (0) 2023.03.07
[Python] asterisk  (0) 2023.03.07
[Python] 파이썬 코드만의 특징  (0) 2023.03.06
[Python] __name__은 무슨 의미일까?  (0) 2023.03.06
[Python] 문자열 포맷팅  (0) 2023.03.06