본문 바로가기
성장하기/Python

permutations 과 combinations

by 솔로 슈퍼스타 2023. 6. 15.
728x90

permutations과 combinations은 itertools 모듈에서 제공하는 함수로서, 주어진 요소들로 가능한 순열과 조합을 생성해주는 기능을 제공합니다.

1. permutations:

  • permutations(iterable, r=None) 함수는 주어진 iterable에서 요소들의 순열을 생성합니다.
  • 순열은 요소들의 순서를 바꿔서 생성하는 것을 의미합니다. 따라서 순서가 다른 경우에는 다른 순열로 취급됩니다.
  • r 매개변수를 사용하여 생성할 순열의 길이를 지정할 수 있습니다. 기본값은 None으로, iterable의 모든 요소들로 가능한 모든 순열을 생성합니다.
  • 반환값은 순열을 나타내는 튜플들로 이루어진 이터레이터입니다.

 

2. combinations:

  • combinations(iterable, r) 함수는 주어진 iterable에서 요소들의 조합을 생성합니다.
  • 조합은 요소들의 순서는 고려하지 않고, 주어진 개수(r)만큼의 요소들로 구성된 집합을 의미합니다.
  • 반환값은 조합을 나타내는 튜플들로 이루어진 이터레이터입니다.
  • r 매개변수는 반드시 지정해야 하며, 생성할 조합의 길이를 나타냅니다.

 

예시를 통해 각각의 동작을 살펴보겠습니다.

 

import itertools

# permutations 예시
my_list = ['A', 'B', 'C']
permutations = itertools.permutations(my_list, 2)
for perm in permutations:
    print(perm)

# 출력:
# ('A', 'B')
# ('A', 'C')
# ('B', 'A')
# ('B', 'C')
# ('C', 'A')
# ('C', 'B')

# combinations 예시
my_list = ['A', 'B', 'C']
combinations = itertools.combinations(my_list, 2)
for comb in combinations:
    print(comb)

# 출력:
# ('A', 'B')
# ('A', 'C')
# ('B', 'C')

위의 예시에서 permutations 함수는 주어진 리스트에서 2개의 요소로 만들 수 있는 모든 순열을 생성하고, combinations 함수는 주어진 리스트에서 2개의 요소로 만들 수 있는 모든 조합을 생성합니다.

 

중복 없는 모든 가능한 조합을 얻기 위한 예제 코드입니다.

import itertools

my_list = ['A', 'B', 'C']
all_combinations = []

# 가능한 모든 조합 얻기
for r in range(1, len(my_list) + 1):
    combinations = itertools.combinations(my_list, r)
    all_combinations.extend(combinations)

# 결과 출력
for comb in all_combinations:
    print(comb)
    
#출력
#('A',)
#('B',)
#('C',)
#('A', 'B')
#('A', 'C')
#('B', 'C')
#('A', 'B', 'C')

 

'성장하기 > Python' 카테고리의 다른 글

DFS(Depth-First Search)와 BFS(Breadth-First Search)  (0) 2023.06.15
set  (0) 2023.06.15
소수찾기와 에라토스테네스의 체  (0) 2023.06.15
cycle  (0) 2023.06.15
cmp_to_key  (0) 2023.06.14