반응형
iterator
이터레이터(iterator)는 값을 차례대로 꺼낼 수 있는 객체(object)
파이썬에서는 이터레이터만 생성하고 값은 필요한 시점이 되었을 때 만드는 방식을 사용-> 메모리 이득
반복 가능한 객체(iterable) - 문자열, 리스트, 딕셔너리, 세트, 맵, zip
iter 메서드가 들어있으면 iterable 객체
_list=[1,2,3]a= map(int,_list)b= zip(_list,_list)print(dir(a))print(dir(b))print(a)print(b)
xxxxxxxxxx['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__','__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__','__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']<map object at 0x000002A43C5696D0><zip object at 0x000002A43C5C2640>
반복 가능한 객체(iterable)에서 iter를 호출하면 이터레이터가 나옴
x_list=[1,2,3]print(_list.__iter__())<list_iterator object at 0x000001E67F0F9610>
next를 통해서 순서대로 추출 가능
xxxxxxxxxxb= zip(_list,_list)print(b.__next__())print(b.__next__())print(b.__next__())
지정된 갯수 이상으로 출력을 원할 시 StopIteration 뜸
xxxxxxxxxx(1, 1)(2, 2)(3, 3)
xxxxxxxxxx이터레이터 = 반복가능한객체.__iter__() # 반복가능한 객체에서 이터레이터를 얻음이터레이터.__next__() # 반복 가능한 객체의 요소를 차례대로 꺼냄이터레이터 = iter(반복가능한객체) # iter 함수 사용next(이터레이터) # next 함수 사용
- 시퀀스 객체와 반복 가능한 객체의 차이
요소의 순서가 정해져 있고 연속적으로 이어져 있으면 시퀀스 객체, 요소의 순서와는 상관없이 요소를 한 번에 하나씩 꺼낼 수 있으면 반복 가능한 객체

반응형
'PYTHON > 기본 문법' 카테고리의 다른 글
| numpy 기초 (0) | 2022.07.31 |
|---|---|
| [PYTHON - 기본 문법] 1. 변수 (0) | 2020.10.11 |
| [PYTHON - 기본 문법] 파이썬 ++ (0) | 2020.05.20 |
| [PYTHON - 기본 문법] comprehension (2) | 2020.05.17 |
| [PYTHON - 기본 문법] 0. 환경 설정 (0) | 2020.05.10 |
댓글