🔥 이터러블과 이터레이터
강의 목차
이 장에서는 파이썬의 이터러블(iterable)과 이터레이터(iterator)에 대해 자세히 알아보겠습니다. 이 두 가지 개념은 파이썬에서 데이터를 반복하고 처리하는 핵심적인 역할을 합니다. 이 개념을 쉽게 이해하기 위해 다양한 예제와 함께 설명하겠습니다.
이터러블(iterable)과 이터레이터(iterator) 이해하기
이터러블(iterable)이란?
이터러블은 반복 가능한 객체로, 여러 개의 요소를 가지고 있고 이를 반복해서 순회할 수 있는 객체를 의미합니다. 파이썬에서는 리스트, 튜플, 문자열, 집합 등이 이터러블 객체입니다. 이터러블은 for
반복문에서 사용되며, 각 요소를 차례대로 처리하는 데 유용합니다.
이터레이터(iterator)란?
이터레이터는 이터러블 객체의 요소를 하나씩 반환하는 객체입니다. 이터레이터는 iter()
함수로 생성하며, next()
함수로 다음 요소를 가져올 수 있습니다. 이터레이터는 이터러블의 내부 상태를 유지하고, 요소를 순차적으로 제공하는 역할을 합니다.
이터러블(iterable)과 이터레이터(iterator) 예제
리스트를 이터러블로 활용하기
리스트는 가장 일반적인 이터러블 객체 중 하나입니다. 다음은 리스트를 이터러블로 활용하는 예제입니다.
numbers = [1, 2, 3, 4, 5] # 리스트를 이터레이터로 변환 iter_numbers = iter(numbers) # 이터레이터를 사용하여 요소 출력 print(next(iter_numbers)) # 1 print(next(iter_numbers)) # 2
python
문자열을 이터러블로 활용하기
문자열 역시 이터러블 객체로 활용할 수 있습니다.
text = "Hello, Python" # 문자열을 이터레이터로 변환 iter_text = iter(text) # 이터레이터를 사용하여 문자 출력 print(next(iter_text)) # 'H' print(next(iter_text)) # 'e'
python
이터러블과 이터레이터의 관계
이터러블과 이터레이터는 밀접한 관계를 가지고 있습니다. 이터러블 객체는 iter()
함수를 통해 이터레이터 객체로 변환됩니다.
numbers = [1, 2, 3] # 리스트를 이터레이터로 변환 iter_numbers = iter(numbers)
python
for
반복문과 이터러블
for
반복문은 이터러블 객체를 순회하면서 요소를 처리합니다. 이터러블 객체에 대해 iter()
함수를 호출하고, 내부적으로 이터레이터 객체를 사용하여 요소를 하나씩 가져옵니다.
numbers = [1, 2, 3] # for 반복문을 사용하여 리스트 순회 for num in numbers: print(num)
python
StopIteration
예외
이터레이터는 모든 요소를 순회한 후에는 StopIteration
예외를 발생시킵니다. 이를 이용하여 반복을 종료할 수 있습니다.
numbers = [1, 2, 3] iter_numbers = iter(numbers) try: while True: num = next(iter_numbers) print(num) except StopIteration: pass
python
사용자 정의 이터러블
사용자는 자신만의 이터러블 객체와 이터레이터를 만들 수 있습니다. 클래스 내에 __iter__()
와 __next__()
메서드를 정의하여 이터레이터를 구현할 수 있습니다.
class MyIterable: def __init__(self, start, end): self.start = start self.end = end def __iter__(self): return self def __next__(self): if self.start > self.end: raise StopIteration self.start += 1 return self.start - 1 my_iterable = MyIterable(1, 5) for num in my_iterable: print(num)
python
이터러블과 이터레이터 활용
파일 읽기와 이터러블
텍스트 파일을 한 줄씩 읽어오는 과정에서 이터러블과 이터레이터가 활용됩니다. 파일 객체는 이터러블이며, readline()
메서드를 사용하여 이터레이터 역할을 수행합니다.
with open("example.txt", "r") as file: for line in file: print(line)
python
제너레이터(generator)를 이터레이터로 활용
제너레이터는 함수 내부에서 yield
키워드를 사용하여 값을 생성하는 객체입니다. 제너레이터는 이터러블과 이터레이터의 역할을 동시에 수행합니다.
def count_up_to(n): i = 1 while i <= n: yield i i += 1 counter = count_up_to(5) for num in counter: print(num)
python
연습문제
- 1부터 100까지의 숫자 중 짝수만 출력하는 프로그램을 작성하세요. (이터레이터 활용)
- 사용자로부터 정수를 입력받아, 해당 숫자부터 1까지 역순으로 출력하는 프로그램을 작성하세요. (이터러블 활용)
- 사용자로부터 단어를 입력받아, 각 문자를 역순으로 출력하는 프로그램을 작성하세요. (제너레이터 활용)