습관처럼

python - combinations,permutations:순열과 조합 본문

Language/python

python - combinations,permutations:순열과 조합

dev.wookii 2019. 12. 8. 15:45

여러개의 요소중에서 무작위로 뽑았을때의 각각의 순열과 조합은 어떻게 될까?

 

여러 알고리즘 문제에서 수열과 조합들이 자주 나오고 있는데 이걸 한번에 해결할 수 있는 모듈이 파이썬에는 존재합니다.

 

바로 itertools의 permutations 과 combinations입니다.

 

alist = [1, 8, 3, 2] 가 존재한다고 가정해봅시다.

b = itertools.permutations(alist, 2) # 순열

c = itertools.combinations(alist, 2) # 조합

 

위와 같은 코드를 실행하게 되면,b에는 itertools.permutations 객체가, c에는 itertools.combinations 객체가 반환됩니다.

첫번째 인자는 해당 리스트가 들어가가되며 두 번째 인자는 주어진 컨테이너 타입 변수에서 몇 개의 아이템을 조합할지 결정하는 인자입니다.

 

참고로 permutations는 두 번째 인자를 받지 않으면 컨테이너의 전체 길이가 default로 들어가고, combinations는 두 번째 인자를 받지 않으면 동작하지 않습니다(에러)

 

그러면 실행화면을 보여드리겠습니다.

combinations,permutations module 

>>run
[(1, 4), (1, 5), (1, 9), (4, 5), (4, 9), (5, 9)]
[(1, 4, 5, 9), (1, 4, 9, 5), (1, 5, 4, 9), (1, 5, 9, 4), (1, 9, 4, 5), (1, 9, 5, 4), (4, 1, 5, 9), (4, 1, 9, 5), (4, 5, 1, 9), (4, 5, 9, 1), (4, 9, 1, 5), (4, 9, 5, 1), (5, 1, 4, 9), (5, 1, 9, 4), (5, 4, 1, 9), (5, 4, 9, 1), (5, 9, 1, 4), (5, 9, 4, 1), (9, 1, 4, 5), (9, 1, 5, 4), (9, 4, 1, 5), (9, 4, 5, 1), (9, 5, 1, 4), (9, 5, 4, 1)]


Process finished with exit code 0

 

p.s)

추가적으로 product라는 모듈이 존재합니다.

product는 여러 리스트를 조합할때 사용되곤 합니다.

product module

>>run

[(1, 5), (1, 2), (1, 3), (1, 8), (4, 5), (4, 2), (4, 3), (4, 8), (5, 5), (5, 2), (5, 3), (5, 8), (9, 5), (9, 2), (9, 3), (9, 8)]

Process finished with exit code 0

'Language > python' 카테고리의 다른 글

python - 내장함수  (0) 2019.12.22
python - set :집합  (0) 2019.12.21
python - append 그리고 extend  (0) 2019.12.21
python - List  (0) 2019.12.21
python - map,filter,reduce: 조건 변형  (0) 2019.12.09