본문 바로가기
프로그래밍/Python

파이썬(Python) 내장 함수 iter 사용법 (feat. next)

by 부자 꽁냥이 2022. 7. 14.

이번 포스팅에서는 파이썬(Python) 내장 함수인 iter 함수의 사용법을 알아보려고 한다.


   1. iter 함수 사용법

iter 함수는 순회 가능한(Iterable) 객체를 받아서 Iterator로 바꿔준다. 또한 특정값(Sentinel)을 지정하여 더 이상 값을 꺼내지 않도록 설정할 수도 있는데 이때에는 첫 번째 인자로 순회 가능한 객체가 아닌 호출 가능한(Callable) 함수를 넣는다. 구체적인 사용법은 다음과 같다.


iter( '순회가능한 객체' )

iter( '호출 가능한 객체', '반복 감시자' )



   2. iter 함수 예제

사용법을 알았으니 실제로 써보자.

 

a. 첫 번째 사용법

다음은 리스트를 iterator 객체로 바꿔준다. iterator는 그 자체로 출력할 순 없고 for 문이나 list 등으로 감싸줘야 값을 불러올 수 있다. 또한 iterator는 한번 값을 출력하면 그 값이 사라진다.

 

iter_x = iter([1,2,3,4,5])
    
print(list(iter_x))
print(list(iter_x))

 

 

위에서 보는 바와 같이 iterator 객체는 출력이되고나서 한번 더 출력하면 남아있는 원소가 없다.

 

iter 함수는 next 함수와 같이 사용되는 경우가 많다. next는 iterator의 값을 순서대로 하나씩 꺼내 주며 더 이상 꺼낼 값이 없으면 StopIteration 에러를 발생시킨다. 이때 iter_x에 내장되어 있는 __next__를 써도 동일한 결과를 얻을 수 있다.

 

iter_x = iter([1,2,3,4,5])
while True:
    try:
        print(next(iter_x)) ## print(iter_x.__next__())
    except:
        raise

 

참고로 iterator로부터 값을 모두 꺼내온 경우 기본값을 출력할 수 있도록 할 수 있다. next의 두번째 인자가 바로 그것이다. 다음은 iterator에서 모든 값을 다 꺼낸 경우 10을 출력하도록 한 것이다.

 

iter_x = iter([1,2,3,4,5])
iter_num = 1
max_iter = 6
while iter_num<=max_iter:
    print(next(iter_x, 10))
    iter_num += 1

 

 

b. 두 번째 사용법

이번엔 iter 함수의 두 번째 사용법을 알아보자. 다음은 0 부터 10까지 무작위 숫자를 출력하다가 8이 나오는 순간 반복을 끝내는 코드이다.

 

import random

def func():
    return random.randint(0, 10)

iter_y = iter(func, 8)
while True:
    try:
        print(next(iter_y))
    except:
        raise

 

 


댓글


맨 위로