[Python] iter와 next
- Python/기초
- 2021. 1. 20.
파이썬 내장 함수 iter,next 에 대해 알아보겠습니다.
그에 앞서 이터레이터에 대해 살짝 설명하고 파이썬으로 구현을 해보겠습니다.
이터레이터(Iterator)
반복을 이용해 어떤 처리를 수행하는 객체를 이터레이터(Iterator)라고 합니다.
여기서 파이썬에서 반복을 사용하는 모든 툴을 Iteration Tool/Context라 합니다.
대표적으로 for, comprehesion, map 등이 있습니다.
툴만 가지고는 구현이 어렵겠죠?
실제 이터레이션을 수행할 공간의 객체를 뜻하는 Iterable Object(file, list, generator,..) 와 수행처리 객체인 Iterator Object(__next__)가 있습니다. Iterable Object는 모든 객체가 다 되는것이 아니고 반복이 가능한 것만 사용할 수 있습니다. 그림과 같은 형태로 수행을 하게 됩니다.
for 문을 예로 들면, for 안에 __next__ 인자가 있어서 Iterable Object인 list 안에서 자동적으로 반복을 수행하게 됩니다.
L_list = [1,2,3,4,5]
for index in L_list: #Automatic iteration
print(index) # Obtains iter,calls __next__
1
2
3
4
5
iter, next
이 과정을 수동으로 할 수 있습니다. 어쩌다가 수동으로 조절을 해야할 경우가 생기긴 하지만 거의 쓰진 않습니다.
for 문이 어떻게 움직이는지 느낌은 알 수 있을겁니다.
파이썬의 내장 함수인 iter와 next를 이용합니다.
iter 는 __iter__ 를 호출하고 next 는 __next__를 호출합니다.
L_list = [1,2,3,4,5]
I = iter(L_list)
I.__next__() #__next__() 이용
>>> 1
next(I) # next(I) == I.__next__()
>>> 2
next(I)
>>> 3
next(I)
>>> 4
next(I)
>>> 5
next(I) # StopIteration 발생
iter를 이용해 이터레이터를 만들고 next로 반복을 수행하도록 요청을 합니다.
더 이상 가져올 게 없으면 StopIteration이 발생됩니다.
StopIteration 오류를 없앤다면 자동화가 가능하겠네요.
예외처리를 하면 for문과 같은 결과가 나옵니다.
I = iter(L_list)
try:
while True:
print(next(I))
except:
None
1
2
3
4
5
'Python > 기초' 카테고리의 다른 글
파이썬 패키지 삭제 (0) | 2021.02.20 |
---|---|
파이썬,모듈 버전 확인 (0) | 2021.02.16 |
Python의 기본 자료구조 (0) | 2021.01.06 |
Python 딕셔너리 value 값으로 key 값 찾기 (2) | 2020.11.28 |
Anaconda Navigator (가상환경생성,삭제,모듈업데이트,삭제) (0) | 2020.11.18 |