open:itertools

itertools

itertools 모듈에는 맵-리듀스 애플리케이션을 작성하는 데 도움이 되는 함수들이 다양하게 포함돼 있다.

  • filterfalse(): filter() 내장 함수와 비슷하지만, filter() 함수의 술어 논리를 반대로 적용한다. 즉, 술어가 true인 항목을 거부한다.
  • zip_longest(): zip() 내장 함수와 비슷하다. 하지만 zip() 함수가 가장 짧은 순회 가능 객체가 소진됐을 때 병합 작업을 중지하는 반면, zip_longest() 함수는 가장 긴 순회 가능 객체와 대조할 수 있도록 (인수로서 제공된 값을) 가장 짧은 순회 가능 객체에 채워 넣는다.
  • startmap(): map() 내장 함수의 알고리즘을 조금 수정한 함수다. map(function, iter1, iter2)를 실행할 경우 iter1과 iter2 객체의 항목이 function 함수에 위치 인수로서 전달되는 반면, startmap() 함수는 인수 값을 포함하는 튜플이 제공 돼야 한다. 즉 다음과 같이 사용할 수 있다.
    • map = startmap(function, zip(iter1, iter2))

이 밖에도 많은 함수들이 제공된다.

  • accumulate(): sum() 내장 함수의 변형이다. 최종 합계를 얻기 전에 계산되는 부분합이 반환된다.
  • chain(): 순회 가능 객체들을 순서대로 조합한다.
  • compress(): 입력 데이터로서 한 개의 이터레이터를, 입력 셀렉터로서 다른 한개의 이터레이터를 사용한다. 셀렉터로부터 받은 값이 true면 해당 데이터 항목은 통과되고, 그렇지 않으면 거부된다. true-false 값을 기반으로 한느 항목 단위 필터라고 볼 수 있다.
  • dropwhile(): 술어 조건이 true면 값을 거부하고, 일단 false가 되면 그 이후의 값들을 그냥 통과시킨다. takewhile() 함수의 설명을 참조하자
  • groupby(): 키 함수를 사용해 그룹 정의를 제어한다. 동일한 키 값을 갖는 항목들끼리 별도의 이터레이터 그룹으로 분류된다. 이별 데이터가 키 순서로 사전에 정렬돼 있어야 이 함수를 제대로 사용할 수 있다.
  • islice(): 슬라이스 표현식과 비슷하지만, 리스트가 아니라 순회 가능 객체에 적용된다. list[1:]으로 리스트의 첫 번째 행을 제외시킬 수 있듯이, islice(iterable, 1)은 순회 가능 객체의 첫 번째 항목을 제외시킨다.
  • takewhile(): 술어 조건이 true면 값을 통과시키고, false가 되면 즉시 처리를 중단한다. dropwhile()의 설명도 참조하자.
  • tee(): 한 개의 순회 가능 객체를 여러 클론(복제 객체)들로 분할한다. 각 클론별로 소비될 수 있기 때문에 한 개의 순회 가능 데이터에 여러 리듀스 연산을 수행할 수 있다.

  • open/itertools.txt
  • 마지막으로 수정됨: 2020/12/18 13:42
  • 저자 127.0.0.1