본문 바로가기
기타

TIL - 22.02.02

by DGK 2022. 2. 2.

 

개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

2월 2일(수)


iterators

iterator란?

 

  1. 이터레이터(iterator)는 값을 순차적으로 꺼내올 수 있는 객체이다.
  2. 특정 객체가 반복 가능한 객체인지를 확인해보는 방법은 dir로 호출하여 __iter__ 함수가 있는지 확인해보면 된다. (ex. print(dir(반복가능한 객체)))
  3. dir로 출력해보면, __iter__ 함수가 들어있는 것을 확인할 수 있고 이를 print문으로 출력해보면 이터레이터 객체임을 확인할 수 있다.
  4. 또한, 이터레이터를 변수에 저장한 후 __next__ 함수를 호출하면 for문이 동작하는 것처럼 값을 하나씩 꺼내올 수 있다.
  5. 참고로, 대표적인 이터레이터 객체로는 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

댓글