새소식

반응형
Programming Language/Python

[Python] Iterable의 개념과 iterator

  • -
반응형

파이썬에서 iterable과 iterator는 둘 다 데이터를 순회(iterate)하는 개념을 나타내는 데 사용되는 용어다. 그러나 둘은 서로 다른 개념을 나타낸다.

 

그럼 둘의 개념을 하나씩 차례대로 살펴보자.

 

1. Iterable(반복 가능한 객체)


Iterable은 순회 가능한 객체로, 내부에 여러 항목을 가지고 있으며 이를 순차적으로 반복할 수 있는 객체를 의미한다.

Iterable은 for나 while 루프를 통해 순회하거나, iter() 함수를 사용하여 iterator로 변환할 수 있다.

 

Iterator는 값을 순회하는 객체로, __next__() 함수나 next() 함수를 통해 다음 값을 반환하고, 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시킨다. Iterator는 iter() 함수로 생성되며, 자체적으로 순회 상태를 가지고 있다.

 

파이썬에서 iterable이 가능한 자료구조는 다음과 같다.(아래 항목 외에 더 있음)

  • 리스트(list)
  • 튜플(tuple)
  • 문자열(string)
  • 세트(set)
  • 딕셔너리(dictionary)
  • 파일(file)

 

2. iter() 함수는 어떤 것이고 어떻게 사용하는 걸까?


 

iter() 함수는 파이썬에서 사용되는 내장 함수로, Iterable 객체를 iterator로 변환하는 역할을 한다. 이 함수는 iterable 객체를 인자로 받아서 해당 객체를 순회 가능한 iterator로 변환해 주는 역할을 한다.

iter(iterable)

iter함수의 문법

 

위의 예시에서 파라미터로 들어가는 iterable은 iterator로 변환하고자 하는 iterable 객체를 넣어야 한다. 

 

lst = [1, 2, 3, 4, 5]
x = iter(lst)  # 리스트를 iterator로 변환

위 코드에서 lst라는 리스트를 iter() 함수로 iterator로 변환하였다. 이제 x는 lst의 요소를 하나씩 순회하며 가져오는 iterator이다. iterator로 변환되었기 때문에 next() 함수를 사용하여 순회할 수 있다.

 

 

print(next(x))  # 출력: 1
print(next(x))  # 출력: 2
print(next(x))  # 출력: 3

위와 같이 next 함수로 순차대로 순환객체 요소에 접근할 수 있다.

 

 

3. 반복문을 이용한 iterable 객체 사용법


for문

for item in x:
    print(item)

 

while문

try:
    while True:
        item = next(x)
        print(item)
except StopIteration:
    pass  # StopIteration 예외 처리

iterator는 더 이상 반환할 값이 없을 때 StopIteration 예외를 발생시키는 특징을 가지고 있기 때문에 try except문으로 감싸주는 게 좋다.

 

 

읽어주셔서 감사합니다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.