Iterator/Generator의 활용
Iterator: List, Set, Dictionary와 같이 하나하나 처리할 수 있는 객체
Generator: 모든 데이타를 미리 갖고 있지 않은 상태에서 yield에 의해 하나씩만 데이타를 만들어 불러오는 객체
(데이터가 대량이거나 해서 on-demand로 처리하는게 효율적인 경우에 사용)
아래 블로그에서 그 차이를 잘 묘사하고 있습니다
http://pythonstudy.xyz/python/article/23-Iterator%EC%99%80-Generator
예제로 배우는 파이썬 프로그래밍 - Iterator와 Generator
1. Iterator 리스트, Set, Dictionary와 같은 컬렉션이나 문자열과 같은 문자 Sequence 등은 for 문을 써서 하나씩 데이타를 처리할 수 있는데, 이렇게 하나 하나 처리할 수 있는 컬렉션이나 Sequence 들을 Itera
pythonstudy.xyz
"Generator Expression은 Generator Comprehension으로도 불리우는데, List Comprehension과 외관상 유사하다. List Comprehension은 앞뒤를 [...] 처럼 대괄호로 표현한다면, Generator Expression (...) 처럼 둥근 괄호를 사용한다. 하지만 Generator Expression은 List Comprehension과 달리 실제 리스트 컬렉션 데이타 전체를 리턴하지 않고, 그 표현식만을 갖는 Generator 객체만 리턴한다. 즉 실제 실행은 하지 않고, 표현식만 가지며 위의 yield 방식으로 Lazy Operation을 수행하는 것이다."
Iterator/Generator는 iter/next함수와 같이 활용할 수 있습니다.
iter: iteration을 끝낼 값을 지정 후, 해당 값이 나올 때 iteration 종료.
sytax: iter(호출가능한 객체, 특정값)
next: Iteration이 진행될 때는 호출된 객체의 값이 나오고 iteration 후에는 default값을 출력
sytax: iter(호출가능한 객체, default값)
https://dojang.io/mod/page/view.php?id=2408
파이썬 코딩 도장: 39.4 iter, next 함수 활용하기
이번에는 파이썬 내장 함수 iter, next에 대해 알아보겠습니다. iter는 객체의 __iter__ 메서드를 호출해주고, next는 객체의 __next__ 메서드를 호출해줍니다. 그럼 range(3)에 iter와 next를 사용해보겠습니
dojang.io
이번 포스팅의 개념들을 활용하여 리스트에서 최초로 0이 아닌 값을 리턴하는 코드를 짜보면
start_16k = next((i for i, x in enumerate(sales_16k) if x), None)
이런 형태가 될 수 있을 겁니다. sales_16k라는 리스트가 있는데,
(i for i, x in enumerate(sales_16k) if x)
에서 generator를 만들고, next의 문법을 활용해서 최초로 element값이 0이 아닌 인덱스를 찾아내는 것입니다.