습관처럼
python - combinations,permutations:순열과 조합 본문
여러개의 요소중에서 무작위로 뽑았을때의 각각의 순열과 조합은 어떻게 될까?
여러 알고리즘 문제에서 수열과 조합들이 자주 나오고 있는데 이걸 한번에 해결할 수 있는 모듈이 파이썬에는 존재합니다.
바로 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는 두 번째 인자를 받지 않으면 동작하지 않습니다(에러)
그러면 실행화면을 보여드리겠습니다.
>>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는 여러 리스트를 조합할때 사용되곤 합니다.
>>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 |