몽상실현개발주의

[Python] Iterator / Iterable 본문

Language/Python

[Python] Iterator / Iterable

migrationArc 2021. 5. 3. 15:01

[Python] Iterator / Iterable

1. Iterator

    Python Doc

An object representing a stream of data. Repeated calls to the iterator’s __next__() method (or passing it to the built-in function next()) return successive items in the stream. When no more data are available a StopIteration exception is raised instead. At this point, the iterator object is exhausted and any further calls to its __next__() method just raise StopIteration again.
Iterators are required to have an __iter__() method that returns the iterator object itself so every iterator is also iterable and may be used in most places where other iterables are accepted. One notable exception is code which attempts multiple iteration passes.
A container object (such as a list) produces a fresh new iterator each time you pass it to the iter() function or use it in a for loop.
Attempting this with an iterator will just return the same exhausted iterator object used in the previous iteration pass, making it appear like an empty container.

 

Iterator 는 반복 가능한 객체, 반복문을 활용해서 데이터를 순회하면서 처리 가능한 객체를 의미.

 

Iterator 패턴 구조 다이어그램

 

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

next() 로 다음 데이터를 불러 올수  없을 경우 (마지막 데이터인 경우) StopIteration exception 이 발생.

 

sample_list = [1, 2, 3]
print(type(sample_list))
# <class 'list'>

iterator_list = iter(sample_list) # Iterable -> Iterator 변환
print(type(iterator_list))
# <class 'list_iterator'>

print(next(iterator_list))
# 1
print(next(iterator_list))
# 2
print(next(iterator_list))
# 3

print(next(iterator_list))
# StopIteration
# 예외발생

 

2. Iterable

    Python Doc

An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as liststr, and tuple) and some non-sequence types like dictfile objects, and objects of any classes you define with an __iter__() method or with a __getitem__() method that implements Sequence semantics.

Iterables can be used in a for loop and in many other places where a sequence is needed (zip()map(), …). When an iterable object is passed as an argument to the built-in function iter(), it returns an iterator for the object. This iterator is good for one pass over the set of values. When using iterables, it is usually not necessary to call iter() or deal with iterator objects yourself. The for statement does that automatically for you, creating a temporary unnamed variable to hold the iterator for the duration of the loop. See also iteratorsequence, and generator.

 

iterable 객체라는 것은 iterator 객체로 변환이 가능한 객체를 의미.

 

member를 하나씩 차례로 반환 가능하며, sequence type인 list, str, tuple 이 대표적이다.

for 문의 range 를 사용 할 때, range로 생성된 list가 iterable 객체이기 때문에 차례대로 member를 불러와서 사용할 수 있다.

 

non-sequence typedictfile 도 for 문을 이용해 순차적으로접근이 가능하기 때문에, iterable 하다고 할 수 있다.

 

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

 

    zip([iterable, ...])

  This function returns a list of tuples, where the i-th tuple contains the i-th element from each of the argument sequences or iterables.

    map(function, iterable, ...)

  Apply function to every item of iterable and return a list of the results.

 

zip() 이나 map() 의 argument 는 iterable 객체로 정의되어 있다.

 


- 참고 블로그

 

bluese05.tistory.com/55

 

python iterable과 iterator의 의미

Python iterable과 iterator의 의미 Iterable (이터러블) iterable에 대한 python docs의 정의를 보자. Iterable An object capable of returning its members one at a time. Examples of iterables include all..

bluese05.tistory.com

itholic.github.io/python-iterable-iterator/

 

[python] iterable? iterator?

iterable? iterator?

itholic.github.io

kkamikoon.tistory.com/91

 

Python Iterator란?? Python Iterable이란??

Iterator(반복자)를 먼저 알아보기 전에 Iterable이 무엇인지 알아야 하겠죠? 먼저 Python doc의 Iterable 정의를 보도록 합시다.  Iterable An object capable of returning its members one at a time. Example..

kkamikoon.tistory.com

niceman.tistory.com/136

 

파이썬(Python) - 이터레이터(Iterator) 설명 및 예제 소스 코드

파이썬(Python) Iterator - 설명 파이썬에서 효율적으로 코드를 작성할 수 있는 방법 중에 이터레이터를 반드시 이해해야 된다고 생각됩니다. 이터레이터란 반복가능한 객체 즉, 반복문을 활용해

niceman.tistory.com

nvie.com/posts/iterators-vs-generators/

 

'Language > Python' 카테고리의 다른 글

[Python] List / Set / Dictionary Method 의 시간 복잡도  (0) 2021.05.23
Comments