Python 기초 | 순열과 조합 (permutation, combination)

원준·2023년 5월 23일

파이썬

목록 보기
19/21

Python은 itertools를 이용하면 for문 없이 경우의 수를 찾아 낼수 있다.
for문을 사용해 복잡하게 사용하는 방법보다는 사용할 줄만 안다면 좋은 방법들이다.

1. 순열

permutation

순열이란, 서로 다른 n개 중 r개를 골라 순서를 정해 나열하는 가짓 수

  • 기본 함수 사용 법
    • itertools.permutations(리스트, 묶을 수)
# 기본 사용 법
import itertools

arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))

# [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

2. 조합

combination

조합이란, 서로 다른 n개 중 r개를 취하여 조를 만든다.
이때, 조합은 순서를 고려하지 않기 때문에 중복된 경우의 수는 제외된다.

  • 기본 함수 사용 법
    • itertools.combinations(리스트, 묶을 수)
# 기본 사용 법
import itertools

arr = ['A', 'B', 'C']
nCr = itertools.combinations(arr, 2)
print(list(nCr))

# [('A', 'B'), ('A', 'C'), ('B', 'C')]

3. all(), any(), chain()

1. all()

  • iterable 객체를 인수로 받아서 원소가 모두 참이면 True, 아니면 False를 반환한다.
# 기본 사용 법
result = all([1, 2, 3]) # True
result = all([0, 1, 2]) # False

2. any()

  • iterable 객체를 인수로 받아서 원소가 하나라도 참이면 True, 아니면 False를 반환한다.
# 기본 사용 법
result = any([0, 1, 2]) # True
result = any([0, False, []] # False

3. chain()

  • iterable 객체를 인수로 받아 하나의 iterator로 반환
# 기본 사용 법
import itertools

list_1 = [1, 2]
list_2 = ('A', 'B')
result = itertools.chain(list_1, list_2)
print(list(result))

# [1, 2, 'A', 'B']
profile
공부해보자

0개의 댓글