-
[알고리즘] 완전탐색 / itertools / 순열 중복순열 조합 중복조합algorithm/개념 2022. 3. 12. 17:37반응형
itertools 모듈
순열 permutations(list, r=None) 중복순열 product(list, repeat=1) 조합 combinations(list, r) 중복조합 combinations_with_replacement(list, r) # 순열 : permutations(list, r=None)
from itertools import permutations random_list=['A','B','C'] resultA=permutations(random_list) resultB=permutations(random_list,2) print(list(resultA)) print(list(resultB))
결과>>
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')] [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
list형식이 아닌 것으로 프린트할 때
for i in resultA: print(i)
결과>>
('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A')
# 중복 순열 : product(list, repeat=1)
from itertools import product random_list=['A','B','C'] resultA=product(random_list) resultB=product(random_list,repeat=2) print(list(resultA)) print(list(resultB))
결과>>
[('A',), ('B',), ('C',)] [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
# 조합 : combinations(list, r)
from itertools import combinations random_list = ['A', 'B', 'C'] resultA = combinations(random_list,1) resultB = combinations(random_list,2) print(list(resultA)) print(list(resultB))
결과>>
[('A',), ('B',), ('C',)] [('A', 'B'), ('A', 'C'), ('B', 'C')]
# 중복 조합 : combinations_with_replacement(list, r)
from itertools import combinations_with_replacement random_list = ['A', 'B', 'C'] resultA = combinations_with_replacement(random_list,1) resultB = combinations_with_replacement(random_list,2) print(list(resultA)) print(list(resultB))
결과>>
[('A',), ('B',), ('C',)] [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
반응형'algorithm > 개념' 카테고리의 다른 글
[Python] 위상정렬 (0) 2023.06.16 [Python] 크루스칼 알고리즘 / MST / 최소 신장 트리 (0) 2023.06.16 [Python] Union - Find 유니온 파인드/서로소 집합 (0) 2023.06.16 [자료구조] 우선순위 큐와 힙 / 최소 힙 / 최대 힙 / heap / (0) 2023.03.31 [알고리즘] 이분탐색 (0) 2022.03.14