python iterable, itertator

석헌주·2021년 12월 4일

iterable

iterable의 의미는 member를 하나씩 차례로 반환 가능한 object를 말한다.

iterable의 예로는 sequence type인 list, str, tuple이 대표적이다. (dict, file도 iterable 하다.)

iterable한 객체들은 for문을 활용해 순차적으로 접근 가능

__iter__()__getitem__() 메소드로 정의된 class는 모두 iterable 하다고 할 수 있다.

iterable은 for loop 말고도, zip(), map()과 같이 sequence한 특징을 필요로 하는 작업에 유용하게 사용된다.

ex) list 객체는 __iter__() 메서드를 가지고 있고 __iter__() 메서드를 호출하면 iterator를 반환하게 된다. for문은 내부적으로 __iter__() 를 호출하는 방식으로 iterator를 가져와 해당 객체의 원소들을 순회하게 된다.

iterator

iterator는 next()메소드로 데이터를 순차적으로 호출 가능한 object를 말한다.

만약 next()로 다음 데이터를 불러올 수 없을 경우 (가장 마지막 테이터인 경우) StopIteration exception을 발생시킨다.

iterable 이라고 해서 반드시 iterator는 아니다

  • 예) list는 iterable 이지만 next()메서드르 사용해서 다음 데이터를 불러오지 못한다.

iterable을 iterator로 변환하고 싶다면, iter()라는 built-in function을 사용하면 된다.

>>> x = [1,2,3]
>>> type(x)
<type 'list'>
>>> y = iter(x)
>>> type(y)
<type 'listiterator'>

iterable obejct를 for문에서 사용할 수 있는 건, python이 내부적으로 list를 iterator로 변화해 주기 때문이다.

참고

https://bluese05.tistory.com/55

profile
백엔드 개발자

0개의 댓글