[Python] Iterable, Iterator

2022. 6. 12. 22:02Languages/Python

 

 

 

Iterables

 

기본 설명

 

  • iterable 또는 interable container한 번에 하나씩 멤버를 반환할 수 있는 모든 Python 객체
  • for 문에서 반복을 사용할 수 있도록 해줍니다.
    • for 문에서 활용될 때, Python 내부적으로는 iter() 함수를 이용하여 Iterator라는 객체를 반환하여 사용합니다.
    • Iteratornext() 함수를 이용하여 다음 멤버를 반환할 수 있습니다.
studentList = ['Tom', 'Jack', 'Jane', 'Susan']
iteratorObject = iter(studentList)         # iterator 생성

print(next(iteratorObject))   # 'Tom'
print(next(iteratorObject))   # 'Jack'
print(next(iteratorObject))   # 'Jane'
print(next(iteratorObject))   # 'Susan'
print(next(iteratorObject))   # 'StopItertation' 예외 발생

 

 

Iterable 객체인지 확인하기

 

  • List, Dictionary, Set, String, Tuple, Bytes, Range가 대표적인 iterable한 타입입니다.
  • dir() 함수를 사용하여 객체에 __iter__ 메소드가 있는지 확인하면 됩니다.
stduentList = ['Tom', 'Jack', 'Jane', 'Susan']
dir(studentList)



'''
[ '__add__',
  '__class__',
  ...
  '__iter__'   # 존재
]

'''

 

 

Iterable 한 클래스 만들기

 

  • Python Programming을 하다 보면, 사용자 정의 클래스를 반복문에서 반복하고 싶은 때가 있습니다.
  • 해당 클래스에 __iter()____next()__ 메소드를 구현해주면 됩니다.
  • for 문에 반복 가능한 객체를 사용하면, 해당 반복 가능한 객체의 __iter()__ 메소드를 통해 iterator 객체를 가져옵니다.
    • 그리고 그 iterator 객체의 __next__() 메소드를 호출하여 루프를 돌게 됩니다.
class MyClass:
    def __iter__(self):
    	...
        
    def __next__(self):
    	...

 

728x90
반응형

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

[Python] 파일 입출력 (File I/O) + with 문법  (0) 2022.06.13
[Python] Generator, Enumerate, Zip  (0) 2022.06.12
[Python] Lambda 식  (0) 2022.06.12
[Python] While / else  (0) 2022.06.12
[Python] 파이썬을 통해 구현한 DFS와 BFS  (0) 2022.05.14