파이썬을 사용하다 보면 iterable, iterator 한 객체라고 하면서 많이 들어봤을 거다.
이 두 부분에 대해서 아래에 정리해보겠다.
iterable
iterable 한 객체는 즉, 반복 가능한 객체
라고 알고 있으면 된다.
그러면 반복 가능한 객체는 무엇인가?
대표적으로 우리가 알고 있는 list, tuple, dict
등등 for 문에서 돌아가는 객체들을 생각하면 된다.
앞서 말한 저 3가지 말고도 다른 게 있는데 set, str, bytes, range
가 있다.
# iterable 한 객체 예시
# list
var_list = [1, 2, 3, 4]
var_dict = {'a': 1, 'b': 2}
var_set = {1, 2}
var_str = 'abc'
var_bytes = b'abcdef'
var_tuple = (1, 2, 3, 4)
var_range = range(0, 5)
# 반면 iterable한 객체가 아닌 예시
var_int = 123
var_float = 10.1
var_none = None
# 위의 예시가 iterable 한 객체인지 확인해보는 방법
isinstance(var_list, collections.Iterable) # True / False로 출력이 되는데 iterable 한 객체이면 True를 반환 한다.
iterator
iterator 한 객체는 즉, 값을 차례대로 꺼낼 수 있는 객체
이다.
iterator 객체를 만드는 방법은 iterable 객체를 파이썬 내장함수인 iter()를 사용해 iterator 객체를 만들 수 있다.
a = [1, 2, 3]
b = {1, 2, 3}
c = (1, 2, 3)
# iterator 객체로 만드는 방법
# 1. iter()를 사용해서 만들기
a_iter = iter(a) # iterator 객체 생성 완료
# 2. __iter__ 메서드로 만들기 (iterable 객체의 매직 메서드를 사용)
b_iter = b.__iter__()
c_iter = iter(c)
type(a_iter) # type을 찍어봄으로써 iterator 객체로 생성되었다는 것을 알 수 있다.
type(b_iter)
type(c_iter)
# 각각의 type은 해당 객체_iterator로 나온다.
# ex) list를 iterator 객체로 변환 하면 list_iterator로 type명이 출력된다.
# a_iter 값 하나씩 뽑아보기
next(a_iter) # 1
next(a_iter) # 2
next(a_iter) # 3
next(a_iter) # 4번째 값은 없으므로 StopIteration이라는 예외가 발생하게 된다.
# __next__()으로 값 뽑아보기
b_iter.__next__()
b_iter.__next__()
b_iter.__next__()
'python' 카테고리의 다른 글
python map() (0) | 2021.07.06 |
---|---|
python 내장함수 sort(), sorted() (0) | 2021.06.26 |
python json 모듈로 json 데이터 다루기 (0) | 2021.06.20 |
python @decorator에 대해서 (0) | 2021.06.20 |
python 추상 클래스(abstract class) (0) | 2021.06.08 |