*iterator
-공간 = iter( 리스트 )
ex) a = [0, 1, 2, 3]
b = iter(a) ; iterator를 담을 공간 'b'에 iter 함수를 사용하여 a 리스트 인자를 줌
-iterator: 공간 'b'가 이터레이터
-iteration: b로부터 순차적으로 요소를 가져오는 행위; next() 함수 사용
ex) next(b)
b.__next__()로 직접 메소드 시행도 가능
-iterable: 이더레이션이 가능하다는 의미
-리스트는 iterator가 아니다
next(a) => error ('list' object has no attribute 'next')
-그렇지만 list는 iterable 하다! (for문)
*Generator
-함수의 형태로 사용, return 대신에 yield 사용
-yield: 값을 반환하되 종료하지 않는다
ex)
def generation_test(n):
...: print("generation start")
...: while n < 6:
...: print("generator: I give control to the main")
...: yield n
...: print("generator: I received a control")
...: n += 1
...: print("Generator: n += 1")
...: print("Generator End")
...:
In [5]: for i in generation_test(0):
...: print("Main: I received a control")
...: print(i)
...: print("Main: I give control to the Generator")
-위 예시처럼 for문과 함께 사용.. 사용 예제 익혀야 할
-generator의 특성: 값을 반환해도 종료되지 않음/필요한 시점에 값을 생성하고 추출
-텍스트에서 한 라인씩 읽어서 특정 텍스트를 찾는 등의 동작을 하는 프로그램 등에서 사용
-참고
http://haerakai.tistory.com/34#recentTrackback
http://friberry.com/?p=254
-추가적으로 공부할 url
'backend > python' 카테고리의 다른 글
파이썬 날짜, 시간 관련 모듈 (0) | 2016.11.19 |
---|---|
파이썬에서 파일 입출력하기 (0) | 2016.11.19 |
정규표현식-Regular expression (0) | 2016.11.17 |
파이썬 데이터 라이브러리 - 수찬님 강의 2일차 복습 (1), 동적인 웹사이트 크롤링 (0) | 2016.11.08 |
jupyterthemes 적용하기 - 이쁘게 쓰자 (0) | 2016.11.08 |