FUNDAMENTAL | 06-3. Iterator, Generator

yeonk·2021년 9월 14일
0

aiffel-ai-bootcamp

목록 보기
15/38
post-thumbnail

20210914

오늘의 lms에서도 다수의 팀원이 어려워하는 부분이 있어 퍼실님이 예제와 함께 설명해주셨다.

항상 너무 어렵고 버겁지만 이렇게 모르는 부분을 짚고 넘어가서 정말 좋다..
만약 같이 논하지 않았으면 혼자 또 끙끙 댔을 것이다.

팀원들이랑 같이 공부하고 토론할 수 있어서 너무 행복하고 감사하다 😊



제너레이터(generator)

iterable(이터러블): 리스트, 튜플, 딕셔너리 같은 여러 개의 원소들을 가지는 컨테이너 객체

iterator(이터레이터) : 이터러블에서 원소를 하나씩 꺼내와 next를 통해 값을 하나씩 접근하게 해주는 객체

제너레이터 : 이터레이터를 생성해주는 함수

  • 이터레이터는 내부 원소들을 하나씩 소모한다.

  • 제너레이터를 사용하면 메모리 관리에 매우 효율적이다 !

  • iter(): 이터러블 객체를 이터레이터로 만들어준다.






# 프로그래밍을 할 때는 극단적으로 생각하는게 중요하다.

def square(num_list):
    new_list = []
    for item in num_list:
        new_list.append(item*item)
    return new_list
    


# 만약 num_list의 개수가 1억개라고 한다면
# 아래 코드를 실행하면 2억개의 원소가 메모리에 저장된다.

num_list = [i for i in range(10)]
new_list = square(num_list)
for item in square(num_list):
    print(item)   



num_iterator = iter(num_list)

print(next(num_iterator))
print(next(num_iterator))

print()
print()
for item in num_iterator:
    print(item)
    
# 이터레이터는 내부 원소들을 하나씩 소모를 합니다.
# 메모리를 비우게 됩니다.
# iter()
# next()



def generate_sqaure(num_list):
    for item in num_list:
        yield item * item
        
 
 
 
        
num_list = [i for i in range(10)]
num_iterator = generate_sqaure(num_list)
print(next(num_iterator))
print(next(num_iterator))

print()
print()

for item in num_iterator:
    print(item)

0개의 댓글