[Python] 순열(permutations)과 조합(combinations)에 대해 알아보자

류성훈·2022년 6월 27일
0

파이썬

목록 보기
1/1

순열

순서대로 뽑아내는 것, 수학에서 nPr 과 동일

from itertools import permutations

arr = ['a','b','c']

arr를 a,b,c 로 이루어진 문자배열이라 하였을 때

permutations(arr)
---
<itertools.permutations at 0x10872e390>

순열을 실행시켜보면 눈으로 확인할 수 없는 객체로 출력이 된다.
이것을 확인하기 위해 list 형식으로 바꾸어 주자.

list(permutations(arr))
---
[('a', 'b', 'c'),
 ('a', 'c', 'b'),
 ('b', 'a', 'c'),
 ('b', 'c', 'a'),
 ('c', 'a', 'b'),
 ('c', 'b', 'a')]

순서가 적용 된 순열이 출력됨을 확인할 수 있다.
이것을 'abc', 'acb'형식의 문자열로 출력하고 싶다면?

list(map(''.join,permutations(arr)))
---
['abc', 'acb', 'bac', 'bca', 'cab', 'cba']

이런식으로 join을 map해주면 된다.

+)

list(map(''.join,permutations(arr,2)))
---
['ab', 'ac', 'ba', 'bc', 'ca', 'cb']

이런식으로 permutations안에 뽑고싶은 숫자를 넣어줄 수도 있다.

조합

순서가 상관없이 n개중 r개를 뽑았을 경우이며, 수학에서 nCr과 같다.

from itertools import combinations

조합을 import 해주고, 나머지는 순열과 같다!

profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글