[Python] 중급 #5-iterable, iterator 객체

정보구니·2021년 12월 14일
0

Python

목록 보기
14/18
post-thumbnail

iterable, iterator 객체


>>> ds = [1, 2, 3, 4]
>>> ir = iter(ds)  # iterator 객체를 얻는 방법

# iterator 객체를 통해 값을 하나씩 꺼내는 방법
>>> next(ir)  # 첫번째 값 반환
1
>>> next(ir)  # 두번째 값 반환
2
>>> next(ir)  # 세번째 값 반환
3
>>> next(ir)  # 네번째 값 반환
4

위 코드를 해석해보자면 다음과 같다.

iter()함수를 호출하면 ds에 접근할 수 있는 iterator객체(리모컨)가 만들어진다.
변수 ir은 이 iterator객체를 참조하게 된다.
객체를 전달하면서 next함수를 호출해 리스트에 저장된 값을 하나씩 얻을 수 있다.


조금 더 이해하기 쉽도록 리모콘에 비유해보도록 하겠다.
ds 리스트를 조종할 수 있는 리모콘(iterator 객체)이 만들어지고,
리모콘의 next 버튼을 누르면 리스트의 요소들을 하나씩 순차적으로 꺼내준다고 생각하면 된다.



이때 모든 리스트의 요소를 꺼내고 난 뒤, 다시 next()함수를 호출하면 StopIteration이라는 예외가 발생하도록 설계되어 있다.



iterable, iterator 객체의 구분

그렇다면 iterable 객체와 iterator 객체의 차이는 무었일까?

iter 함수가 반환하는 객체를 가리켜 iterator 객체라 하고, iterator 객체를 얻을 수 있는 리스트와 같은 객체를 가리켜 iterable객체라 한다.

  • Iterable 객체 : iter 함수에 인자로 전달 가능한 객체
  • Iterator 객체 : iter 함수가 생성해서 반환하는 객체 (리모콘)

즉, iterable 객체를 대상으로 iter()함수를 호출해서 iterator 객체를 만드는 것이다!



🔎 참고
중급편 열혈 파이썬 story05

0개의 댓글