fruits = [apple, banana, mango]
iter(fruits) # <list_iterator at 0x105d01910>
memory_address_fruits = iter(fruits)
print(next(memory_address_fruits)) # apple
print(next(memory_address_fruits)) # banana
print(next(memory_address_fruits)) # mango
# 일반 리스트의 경우
def origin_list(number):
tmp = []
for i in range(number):
tmp.append(i)
return tmp
print(origin_list(4))
# [0, 1, 2, 3]
# generator의 경우
def generator_list(number):
tmp = []
for i in range(number):
yield i
generator_list(4)
# <generator object generator_list at 0x106b64120>
import sys
origin_size = origin_list(10)
generator_size = generator_list(10)
print(f"origin_list 사용시 용량 {sys.getsizeof(origin_size)}byte")
print(f"generator_list 사용시 용량 {sys.getsizeof(generator_size)}byte")
origin_list 사용시 용량 184byte
generator_list 사용시 용량 112byte
화장실에 여러명이 한 번에 들어가는것보다, 한 명이 나오면 한 명이 들어가는 방법을 사용하는것이 더 효율적인 것 처럼
gen_compre = (n for n in range(10))
print(type(gen_compre))
# <class 'generator'>