본문 바로가기

프로그래머/Python

[널널한 교수의 고급 파이썬] 03-1 반복 가능 자료형과 반복자

03-1 반복 가능 자료형과 반복자

반복자란?

  • 하나 이상의 항목이 포함되어 있는 자료구조에서 데이터를 순차적으로 꺼내어 이용할 수 있는 객체
  • 데이터를 순차적으로 꺼낼 때에는 next()라는 함수나 이 객체의 next()라는 특수 메소드를 사용해야 한다
  • 파이썬의 반복자는 이렇게 next()라는 메소드를 가지고 차례차례로 다음 항목의 요소를 반환할 수 있다
  • 반복 가능 객체 : 리스트, 튜플, range형
  • 반복 가능 객체 -> iter() 함수 -> 반복자 객체(iterator) -> next() 함수 / StopIteration

반복가능(iterable) 자료형

  • 반복자 자료형과 유사한 자료형
  • 반복가능 자료형으로는 리스트, 딕셔너리, 튜플, 문자열, 집합, 파일, range가 있다
  • 반복가능 자료형은 파이썬 내장함수인 iter() 함수를 이용해서 반복자 객체로 만들 수 있다
l = [10, 20, 30]
l_iter = iter(l)    # 반복 가능 자료형

n = 100
n_iter = iter(n)    # 반복 불가능 자료형

next() 함수를 사용한 반복자 객체의 요소 추출

lst = [10, 20, 30]
l_iter = iter(lst)
next(l_iter)    # 10
next(l_iter)    # 20
next(l_iter)    # 30
next(l_iter)    # StopIteration err

next() 메소드를 사용한 반복자 객체의 요소 추출

next() 함수의 호출과 동일하게 작용

lst = [10, 20, 30]
l_iter = iter(lst)
l_iter__next__()    # 10
l_iter__next__()    # 20
l_iter__next__()    # 30
l_iter__next__()    # StopIteration err

range형 객체를 반복자 객체로 만들기

  • range() 함수는 range형 객체를 만들어준다
  • 이 range형 객체는 iter() 함수를 통해 range_iterator 형으로 변환시킬 수 있는 반복가능 객체이다
  • range_iterator형 객체는 next() 함수를 통해 다음 항목으로 접근할 수 있다

iterator 객체와 for - in range() 구문

for i in range(5):
    print(i, end = ' ')
  • 위의 대화창 실습 코드와 같이 iterator 객체는 for - in 구문을 통해서 반복적으로 하나씩 데이터를 꺼내서 처리할 수 있다

정리

  • 파이썬은 반복가능 자료형(iterable)과 반복불가능 자료형이 있음
  • 반복가능 자료형으로는 list, dict, set, str, tuple, bytes, range가 있음
  • 반복가능 객체를 iter()함수를 사용하여 반복자 객체(iterator)로 만들 수 있다
  • next() 내장 함수나 next() 메소드를 이용하여 반복자 객체 내의 원소를 하나하나 뽑아낼 수 있다