반응형
최근 회사에서 자동화 업무를 요청받았습니다!! (너무 기분 좋습니다ㅠㅠ)
경우의 수를 모두 아우를 수 있는 코드를 짜야하는데
for을 여러개 쌓아 직접 만들어보려 했는데 검색해보니 편한 라이브러리가 있었습니다,
itertools라는 라이브러리고 내장 함수입니다.
from itertools import *
로 간단히 import 받으시면 됩니다.
1. 순열(Permutation)
순서는 있으나 중복 없는 모든 경우의 수를 나열합니다. 2는 dataset에서 2개를 뽑아 리스트를 만들어주는 역할을 합니다.
dataset = ['A', 'B', 'C']
printList = list(permutations(dataset, 2))
print(printList)
# 결과값
# [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
dataset = ['A', 'B', 'C']
printList = list(permutations(dataset, 3))
print(printList)
# 결과값
# [('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
2. 조합(Combination)
순서 상관 없는 경우의 수를 나열합니다.
dataset = ['A', 'B', 'C']
printList = list(combinations(dataset, 2))
print(printList)
# 결과값
# [('A', 'B'), ('A', 'C'), ('B', 'C')]
dataset = ['A', 'B', 'C']
printList = list(combinations(dataset, 3))
print(printList)
# 결과값
# [('A', 'B', 'C')]
3. 중복 순열(Permutation with repetition)
중복을 허용하는 순열입니다. 1번 순열에 중복만 포함된 경우라고 이해하시면 되겠습니다.
dataset = ['A', 'B', 'C']
printList = list(product(dataset, repeat = 2))
print(printList)
# 결과값
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
dataset = ['A', 'B', 'C']
printList = list(product(dataset, repeat = 3))
print(printList)
# 결과값
# [('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'A'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'A'), ('A', 'C', 'B'), ('A', 'C', 'C'), ('B', 'A', 'A'), ('B', 'A', 'B'), ('B', 'A', 'C'), ('B', 'B', 'A'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'A'), ('B', 'C', 'B'), ('B', 'C', 'C'), ('C', 'A', 'A'), ('C', 'A', 'B'), ('C', 'A', 'C'), ('C', 'B', 'A'), ('C', 'B', 'B'), ('C', 'B', 'C'), ('C', 'C', 'A'), ('C', 'C', 'B'), ('C', 'C', 'C')]
4. 중복 조합(Combination with repetition)
중복 포함, 순서를 고려하지 않는 경우입니다.
dataset = ['A', 'B', 'C']
printList = list(combinations_with_replacement(dataset, 2))
print(printList)
# 결과값
# [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
dataset = ['A', 'B', 'C']
printList = list(combinations_with_replacement(dataset, 3))
print(printList)
# 결과값
# [('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'C'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'C'), ('C', 'C', 'C')]
모두 해피코딩 하세요~!!! >.< 깨륵
반응형
'파이썬' 카테고리의 다른 글
파이썬) Multiprocessing Pool 함수 인자 여러개 일 때 (0) | 2021.09.13 |
---|---|
파이썬) 문자열인 딕셔너리 > 딕셔너리로 형변환 (0) | 2021.09.05 |
모듈이 있으나 찾을 수 없을 때 / ModuleNotFoundError: No module named (1) | 2021.08.08 |
파이썬) python 경로 에러 (0) | 2021.05.29 |
분석) Missingno 설치 command (0) | 2020.06.04 |