순열(permutations) nPr
- 순서 고려해서 나열한 경우의 수
- itertools.permutations( items , r ) : 리스트에서 r개의 원소를 골라 순열 결과를 리턴
import itertools
items = ['A', 'B', 'C']
nPr = itertools.permutations(items, 2) # 리스트에서 2개의 원소를 골라 순서정해 나열
print(list(nPr))
>>> [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
# items의 모든 원소를 가지고 순열을 만든다
print(list(map(''.join, itertools.permutations(items))))
>>> ['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
# 2개의 원소를 가지고 순열을 만든다
print(list(map(''.join, itertools.permutations(items, 2))))
>>> ['AB', 'AC', 'BA', 'BC', 'CA', 'CB']
+ 숫자 형태의 경우 map(str, 리스트명)의 과정이 추가로 들어가야 함
- str.join -> iterable iterable에서 문자열을 연결 한 문자열을 반환합니다
- 때문에 숫자를 문자로 변경하지 않으면 'TypeError: sequence item 0: expected str instance, int found' 발생
import itertools
# 숫자형태의 경우
nums=[3,1,2,4]
print(list(map(''.join, itertools.permutations(map(str,nums), 2))))
>>> ['31', '32', '34', '13', '12', '14', '23', '21', '24', '43', '41', '42']
조합(combination) nCr
- 순서 고려하지 않고 나열한 경우의 수 -> 뽑는 순서는 중요하지 않다
- itertools.combinations( items , r ) : 리스트에서 r개의 원소를 골라 조합 결과를 리턴
import itertools
items = ['A', 'B', 'C']
nCr = itertools.combinations(items, 2)
print(list(nCr))
>>> [('A', 'B'), ('A', 'C'), ('B', 'C')]
반응형
'알고리즘 > 문법정리' 카테고리의 다른 글
[ 파이썬 ] 유니온파인드(Union Find) 관련 문제 모음 (0) | 2021.05.28 |
---|---|
[ 파이썬 ] Counter 함수 - 알파벳 개수 세기 ( from collections import Counter ) (0) | 2021.04.27 |
[ 파이썬 ] 내장함수 정리 (0) | 2021.04.27 |
[ 파이썬 ] 파이썬 Dictionary를 이용해 그래프 만들기 / defaultdict() 활용하기 ( from collections import defaultdict ) (0) | 2021.04.12 |
DFS/BFS 문제 정리 (0) | 2021.04.08 |