algorithm/개념

[알고리즘] 완전탐색 / itertools / 순열 중복순열 조합 중복조합

유랄라- 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')]

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형