최대 1 분 소요


itertools - 조합, 순열

조합(combinations) 순열(permutations)
순서x 순서o
\(_nC_r\) \(_nP_r\)
\(\frac{n!}{(n-r)!r!}\) \(\frac{n!}{(n-r)!}\)

조합

n개 중에서 r개를 뽑는 경우의 수

In [1]:
from itertools import combinations
In [2]:
fruits = ['apple', 'orange', 'banana']
In [3]:
for coms in combinations(fruits, 2):
    print(coms)
Out [3]:
('apple', 'orange')
('apple', 'banana')
('orange', 'banana')

In [4]:
# combinations 구현
for i in range(len(fruits)):
    for j in range(i+1, len(fruits)):
        print((fruits[i], fruits[j]))
Out [4]:
('apple', 'orange')
('apple', 'banana')
('orange', 'banana')

순열

n개 중에서 순서를 정해 r개를 뽑는 경우의 수

In [5]:
from itertools import permutations
In [6]:
fruits = ['apple', 'orange', 'banana']
In [7]:
for perms in permutations(fruits, 2):
    print(perms)
Out [7]:
('apple', 'orange')
('apple', 'banana')
('orange', 'apple')
('orange', 'banana')
('banana', 'apple')
('banana', 'orange')

In [8]:
# permutations 구현
for i in range(len(fruits)):
    for j in range(len(fruits)):
        if i != j:
            print((fruits[i], fruits[j]))
Out [8]:
('apple', 'orange')
('apple', 'banana')
('orange', 'apple')
('orange', 'banana')
('banana', 'apple')
('banana', 'orange')

댓글남기기