[python] itertools 순열, 조합 라이브러리

세하·2023년 10월 16일
0

python

목록 보기
2/2

순열 permutation

순서고려O 중복X

import itertools
arr = [1,2,3]
set = itertools.permutations(arr, 3)

print(list(set)) #1

for i in set: #2
    print(i)

-------결과---------
#1
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
#2
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

중복순열 product

순서고려O 중복O
뽑을 데이터의 수를 repeat 속성을 이용하여 설정해줘야한다.

from itertools import product
arr = [1,2,3]

print(list(product(arr, repeat=3))) #1

set = product(arr, repeat=3) #2
for i in set: #2
    print(i)

-------결과---------
#1
[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 1), (1, 3, 2), (1, 3, 3), 
(2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), 
(3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 1), (3, 3, 2), (3, 3, 3)]
#2

만약 합이 4인것만 출력하시오 라는 조건이 붙는다면

from itertools import product
arr = [1,2,3]
set = product(arr, repeat=3)
for i in set: #2
    if sum(i) == 4: #loop를 돌 때 조건 확인
        print(i)

조합 combination

순서고려X 중복X

import itertools
arr = [1,2,3]
set = itertools.combinations(arr, 3)
print(list(set))
# [(1, 2, 3)]

# (arr, 2) -> [(1, 2), (1, 3), (2, 3)]

중복조합 combinations_with_replacement

순서고려X 중복O

from itertools import combinations_with_replacement

arr = [1,2,3]
print(list(combinations_with_replacement(arr, 3)))

[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3),
(2, 2, 2), (2, 2, 3), (2, 3, 3), 
(3, 3, 3)]

0개의 댓글