반응형
안녕하세요. 오늘은 이터레이터에 대해 얕게 배워보겠습니다.
iteration 은 (계산 컴퓨터 처리 절차의)반복 이라는 뜻을 갖습니다.
프로그래밍 언어에서 이터레이션은 여러 객체를 담고 있는 반복 가능형 객체(list,set,dictionary)의 요소들을 하나 하나씩 순회하며 꺼낼 수 있는 인터페이스라고 볼 수 있습니다.
우리가 파이썬을 공부하면 처음에 배우게 되는 반복문 for 도 구현체 안쪽에서는 iter, __next__() 를 호출하고 있습니다. iter()로 이터레이터 객체를 만들어 next()를 호출하면서 이터레이터 객체를 돌리고, 요소가 없을 때 StopIteraton 예외를 일으켜서 for 루프 종료를 알립니다.
직접 for 루프가 되서 호출해보면 다음과 같습니다.
test = 'abc'
iterator = iter(test)
next(test)
>> a
next(test)
>> b
next(test)
>> c
next(test)
>> d
next(test)
StopIteration
그럼 위에 배운 개념을 이용해서, 요소를 거꾸로 꺼내는 이터레이터 객체를 만들어서 반복문을 돌려보겠습니다.
class Reverse:
def __init__(self,data):
[self.data](http://self.data) = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0 :
raise StopIteration
self.index -=1
return self.data[self.index]
rev = Reverse('Hello World')
for c in rev:
print(c)
끝.
반응형
'Data Engineer' 카테고리의 다른 글
파이썬 데일리코딩 - 다이나믹 프로그래밍 (0) | 2024.11.25 |
---|---|
파이썬 데일리코딩 - 덕 타이핑 (1) | 2024.11.17 |
파이썬 데일리코딩 - 함수를 객체처럼 다루기 (1) | 2024.11.14 |
파이썬 데일리코딩 - 운영 수준의 작성 습관(1) (1) | 2024.11.12 |
파이썬 데일리코딩 - dict_get, swap (2) | 2024.11.01 |