개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
2월 2일(수)
iterators
iterator란?
- 이터레이터(iterator)는 값을 순차적으로 꺼내올 수 있는 객체이다.
- 특정 객체가 반복 가능한 객체인지를 확인해보는 방법은 dir로 호출하여 __iter__ 함수가 있는지 확인해보면 된다. (ex. print(dir(반복가능한 객체)))
- dir로 출력해보면, __iter__ 함수가 들어있는 것을 확인할 수 있고 이를 print문으로 출력해보면 이터레이터 객체임을 확인할 수 있다.
- 또한, 이터레이터를 변수에 저장한 후 __next__ 함수를 호출하면 for문이 동작하는 것처럼 값을 하나씩 꺼내올 수 있다.
- 참고로, 대표적인 이터레이터 객체로는 list, dictionary, set, tuple, str 등이 있다.
(참고)
# dir()로 이터레이터 객체인지 확인해보는 방법
L = [1, 2, 3, 4]
iterator_L = L.__iter__()
print("dir iterator_L = ", end=""), print(dir(iterator_L))
'''
출력 :
dir iterator_L = [
'__class__', '__delattr__',
'__dir__', '__doc__', '__eq__',
'__format__', '__ge__',
'__getattribute__', '__gt__',
'__hash__', '__init__',
'__init_subclass__', '__iter__',
'__le__', '__length_hint__', '__lt__',
'__ne__', '__new__', '__next__',
'__reduce__', '__reduce_ex__', '__repr__',
'__setattr__', '__setstate__',
'__sizeof__', '__str__', '__subclasshook__'
]
'''
iterators 객체 활용예시
예시(1)
# for문을 사용하는 경우(리스트)
L = [1, 2, 3, 4]
for x in L:
print(x ** 2, end=' ')
# 출력 : 1, 4, 9, 16
예시(2)
# __iter__ 함수와 __next__ 함수를 사용하는 경우
L = [1,2,3,4]
I = iter(L) # I = L.__iter__()와 동일한 코드
while True:
try:
x = next(I) # x = I.__next__()와 동일한 코드
except StopIteration:
break
print(x**2, end=" ")
# 출력 : 1, 4, 9, 16
# 참고로, 리스트의 인덱스를 벗어나서 가져올 값이 없으면 StopIteration 에러가 발생한다.
예시(3)
# for문을 사용하는 경우(딕셔너리)
D = {'a':1, 'b':2, 'c':3}
for key, value in D.items():
print(key, value, end=' ')
# 출력 : a 1, b 2, c 3
'기타' 카테고리의 다른 글
TIL - 22.02.04 (0) | 2022.02.04 |
---|---|
TIL - 22.02.03 (0) | 2022.02.03 |
TIL - 22.02.01 (0) | 2022.02.02 |
TIL - 22.01.31 (0) | 2022.01.31 |
TIL - 22.01.30 (0) | 2022.01.30 |
댓글