이터레이터와 반복 가능한 객체(iterable)

영선·2024년 10월 25일

Python

목록 보기
2/4

이터레이터(iterator)와 반복 가능한 객체(iterable)는 반복 작업을 수행하는데 사용됩니다.

반복 가능한 객체 (Iterable)

  • 정의: 반복 가능한 객체는 순회 가능한 객체를 의미하며, for 루프에서 사용할 수 있는 모든 객체입니다.
  • 예시: 리스트, 튜플, 문자열 등.
  • 특징: __iter__() 메서드를 가지고 있어 반복자로 변환이 가능합니다.
# 리스트는 반복 가능한 객체
numbers = [1, 2, 3]

# 반복 가능한 객체를 for 루프에서 사용
for num in numbers:
    print(num)

이터레이터 (Iterator)

  • 정의: 이터레이터는 데이터를 하나씩 순서대로 제공하는 객체입니다.
  • 특징
  1. __iter__()__next__() 메서드 : 이터레이터는 이 두 메서드를 가지고 있으며, next() 함수를 사용해 다음 값을 가져올 수 있습니다.
  2. 게으른 평가 (Lazy Evaluation) : 필요할 때만 데이터를 하나씩 가져오기 때문에 메모리 효율성이 높습니다.
  3. 순차 접근 : 이터레이터는 한 방향으로만 순차적으로 접근합니다. 이미 접근한 데이터는 다시 사용할 수 없으며, 필요할 경우 새로운 이터레이터를 만들어야 합니다.
  • 예시: 반복 가능한 객체에서 iter() 함수를 사용하면 이터레이터를 얻을 수 있습니다.
# 리스트는 반복 가능한 객체
numbers = [1, 2, 3]

# 반복 가능한 객체를 이터레이터로 변환
numbers_iterator = iter(numbers)

# 이터레이터에서 next()를 사용하여 요소를 하나씩 가져옴
print(next(numbers_iterator))  # 출력: 1
print(next(numbers_iterator))  # 출력: 2
print(next(numbers_iterator))  # 출력: 3
  • 왜 이터레이터를 사용하는가?
    메모리 절약: 큰 데이터를 한꺼번에 메모리에 저장하는 것이 아니라 필요할 때만 가져오기 때문에 메모리 사용을 절약할 수 있습니다.
    반복적인 처리: for 루프를 사용해서 이터레이터의 요소를 간편하게 반복 처리할 수 있습니다.
    즉, 이터레이터(iterator)는 연속적인 데이터를 하나씩 가져올 수 있는 특별한 객체로, 반복 작업을 효율적으로 처리하고 메모리를 절약하는 데 매우 유용합니다. 예를 들어, 큰 파일을 읽을 때 한 번에 모든 데이터를 메모리에 올리지 않고 한 줄씩 읽을 수 있습니다.

차이점

  • 반복 가능한 객체는 순회할 수 있지만, 직접적으로 값을 하나씩 제공하지 않음. 이터레이터는 next()값을 하나씩 꺼내서 제공하는 역할을 합니다.
  • 반복 가능한 객체는 이터레이터로 변환이 가능하며, 이터레이터는 반복 가능한 객체에서 생성됩니다.

0개의 댓글