파이썬 API 둘러보기

itertools

permutations(), combinations(), chain()

처음엔 단지 순열, 조합을 구하는 데 썼었다.

 

알아보니 itertools는 다양한 이터레이터를 만들어 준다.

검색해보니 한글 문서들은 생각보다 좀... 부실한 편이다.

영문이지만 itertools에 대해 이 문서와, 원 문서를 하나하나 뜯어보면서 익히자. 그럴 가치가 있다.

 

permutations(), combinations()

순열과 조합.

>>> import itertools

>>> list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

>>> list(itertools.permutations([1,2,3,4], 3))
[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]

>>> list(itertools.combinations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

>>> list(itertools.combinations([1,2,3,4], 3))
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

 

chain()

>>> list(itertools.chain([1,2], [3,4], [5,6]))
[1, 2, 3, 4, 5, 6]

>>> lst_of_lst = [[0,1,2], [3,4,5], [6,7,8]]

>>> list(itertools.chain(*lst_of_lst))
[0, 1, 2, 3, 4, 5, 6, 7, 8]

 

댓글

댓글 본문
작성자
비밀번호
버전 관리
장과장02
현재 버전
선택 버전
graphittie 자세히 보기