Python

(파이썬) 내장함수 iter() 이터러블 이터레이터(iterable and iterator)

코딩ABC 2023. 12. 27. 09:38
반응형

파이썬의 내장함수(Built-in Function)인 iter() 함수에 대해 알아봅니다.

이터러블(iterable)반복 가능한의 의미로 이터러블 객체는 반복이 가능한 데이터를 말합니다.

 

예를 들어보겠습니다.

a=[10, 20, 30]
for i in a:
    print(i, end=' ')

리스트(list) a는 이터러블 즉, 반복 가능한 객체입니다.

 

이터러블(iterable) 객체이면 이터레이터(iterator)일까요?

 

이터레이터(iterator)next() 함수로 호출이 가능해야 합니다.

다음의 예를 살펴보겠습니다.

a=[10,20,30]
next(a)

Traceback (most recent call last):

  File "<pyshell#7>", line 1, in <module>

    next(a)

TypeError: 'list' object is not an iterator

 

listiterator가 아니라고 출력합니다.

리스트는 이터러블이지만 이터레이터는 아닙니다. 즉, 이터러블과 이터레이터는 같지 않다라는 것을 알 수 있습니다.

 

내장함수 iter()

iter(object)

반복 가능한 객체(iterator)를 반환합니다.

 

a=[10, 20, 30]
b=iter(a)

type(a)
<class 'list'>

type(b)
<class 'list_iterator'>

next(a)
Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    next(a)
TypeError: 'list' object is not an iterator

next(b)
10

next(b)
20

next(b)
30

next(b)
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    next(b)
StopIteration

iterator 객체는 next() 함수를 호출할 때마다 객체의 요소를 차례대로 반환합니다. 만약 반환할 값이 없다면 " StopIteration" 예외가 발생합니다.

 

다음 예제를 실행해 보겠습니다.

a=[10,20,30]
for i in a:
    print(i, end=' ')

b=iter(a)
for i in b:
    print(i, end=' ')

for i in b:
    print(i, end=' ')          # 출력되지 않았습니다.

(Output)

10 20 30 10 20 30

 

마지막 for 문의 결과가 출력되지 않았습니다.

iterator 객체는 for문이나 next로 그 값을 한 번 읽고나면 다시는 읽을 수 없습니다.

 

반응형