python iterable, itertator

석헌주·2021년 12월 4일
0

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개의 댓글