-
[용어] 파이썬 - 이터러블 (Iterable), 이터레이터 (Iterator)알고리즘/Python 용어 2023. 6. 15. 18:50
목차
1. Iterable
2. Iterator
1. 이터러블 (Iterable)
1-1. 사전적 의미
[형용사] 반복할 수 있는
1-2. Python 공식 용어집
멤버들을 한 번에 하나씩 돌려줄 수 있는 객체(Object). 이터러블의 예로는 모든 (list, str, tuple 같은) 시퀀스 형들 dict 같은 몇몇 비시퀀스 형들, 파일 객체들, __iter__() 나 시퀀스 개념을 구현하는 __getitem__() 메서드를 써서 정의한 모든 클래스의 객체들이 있다.
이터러블은 for 루프에 사용될 수 있고, 시퀀스를 필요로 하는 다른 많은 곳 (zip(), map(), ...) 에 사용될 수 있다.이터레이트할 때 원하는 시퀀스 항목들을 순서대로 돌려주는 객체이지만, 실제로 리스트를 만들지 않아서 공간을 절약한다. 이런 객체를 이터러블이라고 부른다. 공급이 소진될 때까지 일련의 항목들을 얻을 수 있는 무엇인가를 기대하는 함수와 구조물들의 타깃으로 적합하다. 우리는 for 문이 그런 구조물임을 보았다. 함수 list()도 그런 것이다.
2. 이터레이터 (Iterator)
2-1. Python 공식 용어집
데이터의 스트림을 표현하는 객체. 이터레이터의 __next__() 메서드를 반복적으로 호출하면 (또는 내장 함수 next() 로 전달하면) 스트림에 있는 항목들을 차례대로 돌려준다. 더 이상의 데이터가 없을 때는 대신 StopIteration 예외를 일으킨다. 이 지점에서, 이터레이터 객체는 소진되고, 이후의 모든 __next__() 메서드 호출은 StopIteration 예외를 다시 일으키기만 한다. 이터레이터는 이터레이터 객체 자신을 돌려주는 __iter__() 메서드를 가질 것이 요구되기 때문에, 이터레이터는 이터러블이기도 하고 다른 이터러블들을 받아들이는 대부분의 곳에서 사용될 수 있다. 중요한 예외는 여러 번의 이터레이션을 시도하는 코드다. (list 같은) 컨테이너 객체는 iter() 함수로 전달하거나 for 루프에 사용할 때마다 새 이터레이터를 만든다. 이런 것을 이터레이터에 대해서 수행하려고 하면, 지난 이터레이션에 사용된 이미 소진된 이터레이터를 돌려줘서, 빈 컨테이너처럼 보이게 만든다.
이터레이터 형 에 더 자세한 내용이 있다.
https://docs.python.org/ko/3.6/tutorial/controlflow.html#the-range-function