FUNDAMENTAL | 06-3. Iterator, Generator
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)
Author And Source
이 문제에 관하여(FUNDAMENTAL | 06-3. Iterator, Generator), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tjddus0302/FUNDAMENTAL-06-3.-Iterator-Generator저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)