728x90
반응형

순열(=permutations)

 

1️⃣ 반복 가능한 객체(=길이가 n인)에 대해서 중복을 허용하지 않고 r개를 뽑아서 나열
2️⃣ 뽑힌 순서대로 나열하기 때문에 순서가 의미 있음(즉, 같은 값이 뽑히더라도 순서가 다르면 다른 경우의 수로 취급)
3️⃣ permutations(반복 가능한 객체, r)

from itertools import permutations

n = [1, 2, 3, 4]
a = list(permutations(n, 2))

print(a)
# [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

for i in list(a): 
  if i[0] != i[1]:
    print(i[0], i[1])
# 1 2
# 1 3
# 1 4
# 2 1
# 2 3
# 2 4
# 3 1
# 3 2
# 3 4
# 4 1
# 4 2
# 4 3

for i in permutations([1,2,3,4], 2):
    print(i, end=" ")
# (1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)

 


 

조합(=combinations)

 

1️⃣ 반복 가능한 객체(=길이가 n인)에 대해서 중복을 허용하지 않고 r개를 뽑음
2️⃣ 어떤 것을 뽑는지만 중요하게 보기 때문에 뽑은 순서는 고려하지 않음
3️⃣ combinations(반복 가능한 객체, r)

from itertools import combinations

n = [1, 2, 3, 4]
a = list(combinations(n, 2))

print(a)
# [(1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)]

for i in list(a): 
  if i[0] != i[1]:
    print(i[0], i[1])
# 1 2
# 1 3
# 1 4
# 2 3
# 2 4
# 3 4

for i in combinations([1,2,3,4], 2):
    print(i, end=" ")
# (1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)

 


 

중복 순열(=product)

 

product(반복 가능한 객체, repeat=1)

 

from itertools import product

for i in product([1,2,3], repeat=2):
    print(i, end=" ")
# (1, 1) (1, 2) (1, 3) (2, 1) (2, 2) (2, 3) (3, 1) (3, 2) (3, 3) 

for i in product([1,2,3],'ab'):
    print(i, end=" ")
# (1, 'a') (1, 'b') (2, 'a') (2, 'b') (3, 'a') (3, 'b')

 


 

중복 조합(=combinations_with_replacement)

 

combinations_with_replacement(반복 가능한 객체, r)

from itertools import combinations_with_replacement

for cwr in combinations_with_replacement([1,2,3,4], 2):
    print(cwr, end=" ")
# (1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4) 

 

반응형

'프로그래밍 > Python' 카테고리의 다른 글

스택, 큐, 재귀 함수  (0) 2021.01.12
조건문  (0) 2021.01.11
자료형 - 집합  (0) 2021.01.08
자료형 - 딕셔너리  (0) 2021.01.08
자료형 - 튜플  (0) 2021.01.08
복사했습니다!