[Python] Iterable, Iterator
2022. 6. 12. 22:02ㆍLanguages/Python
Iterables
기본 설명
- iterable 또는 interable container는 한 번에 하나씩 멤버를 반환할 수 있는 모든 Python 객체
- for 문에서 반복을 사용할 수 있도록 해줍니다.
- for 문에서 활용될 때, Python 내부적으로는 iter() 함수를 이용하여 Iterator라는 객체를 반환하여 사용합니다.
- Iterator는 next() 함수를 이용하여 다음 멤버를 반환할 수 있습니다.
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 |