반응형
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를 통해서 순서대로 추출 가능
xxxxxxxxxx
b= 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 |
댓글