본문 바로가기
  • Trace
취업/알고리즘이야

헷갈림 : enumerate / iterator / generator

by seleuchel 2022. 4. 2.

iterable : 반복 가능한 객체

list, dict, set, str, bytes, tuple, range

enumerate : 인덱스와 iterable 가능한 요소를 같이 반환 (튜플)

box = ['a','b','c','d']
box_e =enumerate(box)
for i, e in box_e:
print(i, e) # 0, 'a' 이런식으로 출력됨

iterator : 값을 차례대로 꺼낼 수 있음

  • iter()로 이터레이터로 만들 수 있음
  • iter : 매직메소드
  • next : 이 메소드로 호출하여 iter의 객체를 하나씩 가져ㅐ올 수 있음
  • StopIteration 에러 : 요소가 다 반환되면, 해당 에러가 반환됨
    a = [1.2.3]
    a_i = iter(a)
    next(a_i) # 1
    next(a_i) # 2
    next(a_i) # 3

generator : iterator를 생성하는 함수

  • generator에 등록된 yield 키워드 만큼 항목을 출력함
  • StopIteration 에러 : yield가 모두 출력이 되는 경우
  • iterable 가능한 객체에 대해서 yield from 객체 가능 (112 안 써도 됨)
    def dd():
    yield 1
    yield 2
    yield 3
    OR

def dd():
a = [1,2,3]
yield from a

** 변수에 등록하고 쓰는 거임 (안 그러면 매번 첫 요소만 출력됨)
test = dd() 등