Head vs breakz

[Code] - Python / 순열 Permutation , 조합 Combination, 곱집합 Product 사용법 본문

Head/Code

[Code] - Python / 순열 Permutation , 조합 Combination, 곱집합 Product 사용법

headbreakz 2020. 8. 26. 15:08

Permutations( 리스트 , 추출개수 )

from itertools import permutations

num_5 = [1,2,3,4,5]

answer_6 = list(permutations(num_5,2))

print(answer_6)
[(1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 3), (2, 4), 
(2, 5), (3, 1), (3, 2), (3, 4), (3, 5), (4, 1), (4, 2), 
(4, 3), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4)]
num_6 = [1,2,3,4,5]

answer_7 = list(permutations(num_5,3))

print(answer_7)
[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 2), (1, 3, 4), (1, 3, 5),
(1, 4, 2), (1, 4, 3), (1, 4, 5), (1, 5, 2), (1, 5, 3), (1, 5, 4),
(2, 1, 3), (2, 1, 4), (2, 1, 5), (2, 3, 1), (2, 3, 4), (2, 3, 5),
(2, 4, 1), (2, 4, 3), (2, 4, 5), (2, 5, 1), (2, 5, 3), (2, 5, 4),
(3, 1, 2), (3, 1, 4), (3, 1, 5), (3, 2, 1), (3, 2, 4), (3, 2, 5),
(3, 4, 1), (3, 4, 2), (3, 4, 5), (3, 5, 1), (3, 5, 2), (3, 5, 4),
(4, 1, 2), (4, 1, 3), (4, 1, 5), (4, 2, 1), (4, 2, 3), (4, 2, 5),
(4, 3, 1), (4, 3, 2), (4, 3, 5), (4, 5, 1), (4, 5, 2), (4, 5, 3),
(5, 1, 2), (5, 1, 3), (5, 1, 4), (5, 2, 1), (5, 2, 3), (5, 2, 4),
(5, 3, 1), (5, 3, 2), (5, 3, 4), (5, 4, 1), (5, 4, 2), (5, 4, 3)]
txt = 'ABCD'

answer = list(permutations(txt,2))

print(answer)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'A'),
('B', 'C'), ('B', 'D'), ('C', 'A'), ('C', 'B'), 
('C', 'D'), ('D', 'A'), ('D', 'B'), ('D', 'C')]

 

 

Combinations( 리스트 , 추출개수 )

from itertools import combinations

#리스트
num_7 = [1,2,3,4,5,6]
#combination 사용 - 리스트 num_7에서 순서와 상관없이 2개 배열을 리스트로 저장
answer_8 =list(combinations(num_7,2))
#결과
print(answer_8)
[(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 3), 
(2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6), 
(4, 5), (4, 6), (5, 6)]
#리스트
num_8 = [1,2,3,4,5,6]
#combination 사용 - 리스트 num_8에서 순서와 상관없이 3개 배열을 리스트로 저장
answer_9 =list(combinations(num_7,3))
#결과
print(answer_9)
[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 3, 4), 
(1, 3, 5), (1, 3, 6), (1, 4, 5), (1, 4, 6), (1, 5, 6), 
(2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 4, 5), (2, 4, 6), 
(2, 5, 6), (3, 4, 5), (3, 4, 6), (3, 5, 6), (4, 5, 6)]
txt_10 = 'ABCD'

answer = list(combinations(txt_10,2))

print(answer)
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

 

 

Product( 리스트 들)

from itertools import product
#리스트
total_list = [[1,2,3,4],['a','b','c','d'],['A','B','C','D']]
#product 사용
answer_10 =list( product(*total_list))
#결과
print(answer_10)
[(1, 'a', 'A'), (1, 'a', 'B'), (1, 'a', 'C'), (1, 'a', 'D'),
(1, 'b', 'A'), (1, 'b', 'B'), (1, 'b', 'C'), (1, 'b', 'D'), 
(1, 'c', 'A'), (1, 'c', 'B'), (1, 'c', 'C'), (1, 'c', 'D'),
(1, 'd', 'A'), (1, 'd', 'B'), (1, 'd', 'C'), (1, 'd', 'D'), 
(2, 'a', 'A'), (2, 'a', 'B'), (2, 'a', 'C'), (2, 'a', 'D'), 
(2, 'b', 'A'), (2, 'b', 'B'), (2, 'b', 'C'), (2, 'b', 'D'), 
(2, 'c', 'A'), (2, 'c', 'B'), (2, 'c', 'C'), (2, 'c', 'D'),
(2, 'd', 'A'), (2, 'd', 'B'), (2, 'd', 'C'), (2, 'd', 'D'), 
(3, 'a', 'A'), (3, 'a', 'B'), (3, 'a', 'C'), (3, 'a', 'D'), 
(3, 'b', 'A'), (3, 'b', 'B'), (3, 'b', 'C'), (3, 'b', 'D'),
(3, 'c', 'A'), (3, 'c', 'B'), (3, 'c', 'C'), (3, 'c', 'D'),
(3, 'd', 'A'), (3, 'd', 'B'), (3, 'd', 'C'), (3, 'd', 'D'), 
(4, 'a', 'A'), (4, 'a', 'B'), (4, 'a', 'C'), (4, 'a', 'D'),
(4, 'b', 'A'), (4, 'b', 'B'), (4, 'b', 'C'), (4, 'b', 'D'),
(4, 'c', 'A'), (4, 'c', 'B'), (4, 'c', 'C'), (4, 'c', 'D'),
(4, 'd', 'A'), (4, 'd', 'B'), (4, 'd', 'C'), (4, 'd', 'D')]
#문자 리스트
txt_list = 'abcd'
answer_11 =list( product(txt_list,repeat=2) )
print(answer_11)
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd'),
('b', 'a'), ('b', 'b'), ('b', 'c'), ('b', 'd'), 
('c', 'a'), ('c', 'b'), ('c', 'c'), ('c', 'd'),
('d', 'a'), ('d', 'b'), ('d', 'c'), ('d', 'd')]

두개 이상 값의 모든 조합을 만들어 주는 함수이다. 

Comments