웹사이트 검색

Python의 순열 및 조합


요소 집합의 순열 및 조합은 집합 요소의 다른 배열입니다.

  • 조합은 순서가 중요하지 않은 요소의 모음입니다.
  • 순열은 순서가 중요한 집합의 배열입니다.

집합을 다음과 같이 생각해 봅시다.

{A, B, C}

위 세트의 순열은 다음과 같습니다.

('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')

두 가지 요소가 함께 취해질 때 위의 집합의 조합은 다음과 같습니다.

('A', 'B')
('A', 'C')
('B', 'C')

이 자습서에서는 Python에서 요소 그룹의 순열 및 조합을 얻는 방법을 배웁니다. 문자와 숫자 집합을 살펴보겠습니다.

우리는 Python의 itertools 모듈 아래에서 combination() 및 permutations() 메서드를 사용할 것입니다.

시작하자.

숫자 데이터의 순열

itertools 모듈에서 permutations() 메서드를 사용하려면 먼저 모듈을 가져와야 합니다.

import itertools

이제 일련의 숫자를 정의해 보겠습니다.

val = [1, 2, 3, 4]

이제 permutations() 메서드를 사용하여 순열 목록을 가져옵니다.

perm_set = itertools.permutations(val)

위의 코드 줄은 itertools 개체를 제공합니다. 다른 순열을 인쇄하기 위해 이 개체를 반복합니다.

for i in perm_set:
    print(i)

출력은 다음과 같습니다.

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

이 섹션의 전체 코드는 다음과 같습니다.

import itertools
 
val = [1, 2, 3, 4]
 
perm_set = itertools.permutations(val)
 
for i in perm_set:
    print(i)

문자열의 순열

다음으로 문자열에서 문자의 순열을 얻는 방법을 배웁니다.

permutations() 메서드를 사용하지만 이번에는 문자열을 인수로 전달합니다.

import itertools
 
s = "ABC"

perm_set = itertools.permutations(s)
for val in perm_set:
    print(val)

출력 :

('A', 'B', 'C')
('A', 'C', 'B')
('B', 'A', 'C')
('B', 'C', 'A')
('C', 'A', 'B')
('C', 'B', 'A')

고정 길이 순열

각 순열에서 지정된 수의 요소만 취하는 집합의 순열을 찾을 수 있습니다. 이것은 수학 분야의 nPr과 유사합니다.

고정 길이 순열을 찾는 코드는 다음과 같습니다.

import itertools
 
val = [1, 2, 3, 4]
 
perm_set = itertools.permutations(val,2)
 
for i in perm_set:
    print(i)

출력 :

(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)

숫자 데이터의 조합

permutations() 메서드와 마찬가지로 itertools 아래에서도 combination()을 사용하여 집합의 조합을 가져올 수 있습니다.

조합()을 호출하는 동안 조합을 찾기 위한 집합과 각 조합의 길이를 나타내는 숫자라는 두 개의 인수를 전달해야 합니다.

import itertools
 
val = [1, 2, 3, 4]
 
com_set = itertools.combinations(val, 2)
 
for i in com_set:
    print(i)

출력 :

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

문자열의 조합

문자열 조합도 얻을 수 있습니다. 문자열 조합을 얻으려면 다음 코드를 사용하십시오.

import itertools
 
s = "ABC"
 
com_set = itertools.combinations(s, 2)
 
for i in com_set:
    print(i)

출력 :

('A', 'B')
('A', 'C')
('B', 'C')

대체품과의 조합

itertools 모듈 아래에 combination_with_replacement()라는 또 다른 메서드가 있습니다. 이 방법은 숫자 자체의 조합도 고려합니다.

어떻게 작동하는지 봅시다.

숫자 집합의 경우

import itertools
 
val = [1, 2, 3, 4]
 
com_set = itertools.combinations_with_replacement(val, 2)
 
for i in com_set:
    print(i)

출력 :

(1, 1)
(1, 2)
(1, 3)
(1, 4)
(2, 2)
(2, 3)
(2, 4)
(3, 3)
(3, 4)
(4, 4)

위의 출력과 정상적인 조합 동작에 대한 출력의 차이를 확인할 수 있습니다. 여기에는 일반 조합 작업에는 없는 (1,1) 및 (2,2)와 같은 조합이 있습니다.

문자열의 경우

import itertools
 
val = "ABCD"
 
com_set = itertools.combinations_with_replacement(val, 2)
 
for i in com_set:
    print(i)

출력 :

('A', 'A')
('A', 'B')
('A', 'C')
('A', 'D')
('B', 'B')
('B', 'C')
('B', 'D')
('C', 'C')
('C', 'D')
('D', 'D')

결론

이 튜토리얼은 파이썬에서 세트의 순열과 조합을 찾는 것에 관한 것입니다. 우리는 순열과 조합을 찾기 위해 파이썬에서 사용할 수 있는 itertools 모듈을 사용했습니다.