순서대로 뽑아내는 것, 수학에서 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 해주고, 나머지는 순열과 같다!