list, dict, set, bytes, tuple, range 등을 ⚡️iterable(순환가능) 객체 라고 한다. 값이 여러개 들어갈 수 있는 데이터 구조라고 생각하면 쉽다.
iterable(순환가능) 형은 iter()함수 를 통해 ⚡️iterator 객체가 될 수 있다.
⚡️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() 함수를 이용해서 ⚡️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 예외 발생시킨다.