[python] iterator

amuse·2020년 10월 25일
post-thumbnail

🤔 iterable(순환가능) 형

list, dict, set, bytes, tuple, range 등을 ⚡️iterable(순환가능) 객체 라고 한다. 값이 여러개 들어갈 수 있는 데이터 구조라고 생각하면 쉽다.


🤔 iterator 객체 와 iter() 함수

iterable(순환가능) 형은 iter()함수 를 통해 ⚡️iterator 객체가 될 수 있다.


🤔 next()함수

⚡️iterator 객체는 next() 함수를 통해 순환가능한 객체의 다음 원소를 반환한다.


🕹 정수형을 iter() 함수로 iterator로 바꾸려고 한다면?

n = 100
n_iter = iter(n)

Traceback (most recnet call last):
	File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

정수형 변수는 ⚡️iterable 객체가 아니기 때문에 iter() 함수를 사용해서 ⚡️iterator 객체로 변환하려고 하면 TypeError 가 발생한다.


🕹 리스트형을 iter() 함수로 iterator로 바꾸려고 한다면?

# list가 iterable 객체인지 검사
try:
	num_list = [1,2,3,4]
    iterator = iter(num_list)
except TypeError:
	print('list는 iterable 객체가 아닙니다.')
else:
	print('list는 iterable  객체입니다.')
    
출력결과: list는 iterable  객체입니다.

num_list 는 ⚡️iterable 이기 때문에 iter() 함수를 사용해서 ⚡️iterator 객체로 변환하려고 하면 TypeError 가 발생한다.


next() 함수

🕹 next() 함수를 이용해서 ⚡️iterator 객체의 다음 요소를 얻을 수 있다.

num_list = [1,2,3]
type(num_list)
num_list_iter = iter(num_list)
type(num_list_iter)
next(num_list_iter)

또한 ⚡️__next__() 메소드를 이용해서 iterator 객체의 다음 요소를 얻을 수 있다.
더이상 가져올 객체가 없을경우 StopIteration 예외 발생시킨다.

0개의 댓글