효율적인 루핑을 위한 이터레이터를 만드는 함수라고 한다. 여기서 루핑은 looping, 즉 반복을 의미한다. 이터레이터는 여러 요소를 포함하고 있어 하나씩 꺼내서 어떤 연산을 수행할 수 있도록 하는 객체를 말한다. 편리하게 반복자를 만드는데 사용되는 모듈이다. 파이썬 표준라이브러리 내용을 바탕으로 알아보면 다음과 같다.

 


무한 이터레이터 종류 - count(), cycle(), repeat()

 

itertools.count( )

표준 예제에서 보면, itertools 모듈의 count 함수는 다음과 같이 start 지점과 step 지점이 있고, 각각의 디폴트 값은 0, 1 임을 알 수 있다. start로 시작해서 step의 값만큼 값을 증가시켜 무한으로 반복하는 것을 알 수 있다. 최대값을 알 수 없는 상태에서 계속 반복되는 값을 만드는 

+ 이와 별개로 문자열 기본 함수 중에서 문자의 개수를 알 수 있는 count() 함수의 쓰임도 있다.

 

itertools.cycle( )

표준 예제에서 보면, itertools 모듈의 cycle함수는 iterable의 요소를 순서대로 반환하고 소진시 반복해서 iterable를 반환하는 함수이다. 

 

itertools.repeat( )

표준 예제에서 보면, itertools 모듈의 repeat함수는 object의 요소를 times만큼 반환하는 함수이다. 

 


가장 짧은 입력 시퀀스에서 종료되는 이터레이터 종류

- accumulate(), chain(), chain.from_iterable(), dropwhile(), filterfalse(), islice(), starmap(), takewhile(), comporess()

 

itertools.accumulate( )

표준 예제에서 보면, itertools 모듈의 accumulate함수는 다음과 같이 iterable 요소를 func에 따라 initial 값에 따라 연산한다. function에는 예제와 같이 add 덧셈연산, min 최소값, max 최댓값, mul 곱셈연산 등이 가능하다. 여기서 inital 디폴트값은 없으므로 iterable 요소의 첫번째 값에서 시작되는 연산을 진행하면 된다. 만약 inital 값이 있다면, 그 값을 처음 반환하고 다음에 func 연산을 진행하게 된다.

 

itertools.chain( )

iterable 요소가 모두 반환될 때까지 진행되며, repeat()과 달리 반복하지 않고 요소 반환만 이뤄진다. iterable이 여러 개 있다면 순차적으로 반환한다.

 

itertools.chain.from_iterable()

chain()의 대체 생성자로서, iterable 요소를 하나의 연속된 서열로 만들어준다. 하나의 argument만을 사용하므로 여러 개의 argument가 제시되면 TypeError가 발생한다.

 

itertools.comporess(data, selectors)

제시된 data에서 selectors에 따른 True 요소만을 반환하는 함수이다.

 

itertools.dropwhile(predicate, iterable)

predicate 값이 참인 iterable 요소를 걸러낸다. 즉, 조건에서 5보다 작은 값을 기준으로 하고 있고, iterable값이 0~10이라면 출력되는 값은 5~10의 수가 반환된다.

 

itertools.filterfalse(predicate, iterable)

predicate 값이 참인 iterable 요소를 반환한다. 즉, 조건에서 5로 나누어 떨어지는 수가 참이라고 한다면, 0~9까지의 수에서 0과 5를 반환한다. 0도 반환된다는 것에 주의하자! iterable의 값을 range(10)으로 설정하는 경우의 값은 0~9의 수를 표현한다.

 

itertools.islice(iterable, start, stop, step)

선택된 요소를 반환하는 이터레이터이다. iterable 요소에서 start 요소에서 stop 요소 전까지 step 간격에 따라 반환한다. 즉, range(10)의 값에서 시작이 1, 마지막이 5, 간격이 2라고 한다면 반환되는 값은 1과 3이다.

 

itertools.starmap(function, iterable)

iterable 값을 function에 따라 연산한다. iterable이 튜플로 그룹화 되어 있는 경우에는 각각의 값을 function에 따라 연산하고 반환한다.

 

itertools.takewhile()

predicate가 참인 요소를 반환한다. 이 때, iterable에서 중복되는 요소는 반환하지 않는다.

 


조합형 이터레이터 - product(), permutation(), combination(), combination_with_replacement()

 

 

itertools.product()  만들 수 있는 조합의 모든 수를 반환한다. (중복을 허용)

 

itertools.permutations()  순열 iterator 반환한다. 

 

itertools.combinations()  조합 iterator 반환한다. 

 

itertools.combinations_with_replacement()  조합 iterator 에서 같은 요소를 짝지은 것도 반환한다.

 


파이썬 문법 6 - 이터레이터(Iterator) 와 제너레이터(Generator)

🚙 iterator(이터레이터) 이해하기

(파이썬) itertools 모듈의 count 함수 - 코딩 연습

데이터 분석에 피가 되는 itertools 익히기

Python - Itertools.chain.from_iterable() - GeeksforGeeks

R, Python 분석과 프로그래밍의 친구 (by R Friend) :: [Python] itertools를 활용한 리스트 원소를 n번 반복하여 새로운 리스트 만들기

R, Python 분석과 프로그래밍의 친구 (by R Friend) :: [Python] 리스트 내장 함수 및 메소드 (Python List Built-in functions and methods)

4) 모듈을 임포트하는 세가지 방법 - 파이썬으로 배우는 알고리즘 트레이딩 (개정판-2쇄)

itertools 모듈

 

댓글