Digking's cave

Python 기초 ) itertoools 을 활용한 순열(permutations) / 조합(combinations) / 파이썬 리스트 n개 조합만들기 본문

기초/Python

Python 기초 ) itertoools 을 활용한 순열(permutations) / 조합(combinations) / 파이썬 리스트 n개 조합만들기

디깅 2022. 8. 10. 13:42
728x90

하나의 리스트에서 모든 조합을 계산

  • permutations
  • combinations

두 개 이상의 리스트에서 모든 조합을 계산

  • product

itertoools

순열과 조합을 쉽게 만들어 주는 모듈

permutations 순열

  • 서로다른 n개에서 r개를 선택
  • 순서를 고려 O - AB와 BA는 다른것
  • 중복 X
  • 리턴값은 각 조합이 튜플형식으로 출력된다.
from itertools import permutations

for i in permutations(listname, n):        # listname이라는 list에서 n개 선택
     print(i)

combinations 조합

  • 서로다른 n개에서 r개를 선택
  • 순서를 고려 X - AB와 BA는 같은 것
  • 중복 X
  • 리턴값은 각 조합이 튜플형식으로 출력된다.
from itertools import combinations 

for i in combinations (listname, n):        # listname이라는 list에서 n개 선택
     print(i)

product

  • 두개 이상의 리스트에서 모든 조합을 계산
  • 순서를 고려 O - AB와 BA는 다른것
  • 중복 X
  • product(*listname)  *은 리스트 내 경우의 수 구하기
  • product(listname,repeat=2) repeat은 뽑으려는 data의 수를 의미한다
product(list1, list2)

# *은 리스트 내 경우의 수 구하기
# example = ["가나다", "abc", "123"]
# product(*example)
# ('가', 'a', '1'), ('가', 'a', '2'), ('가', 'a', '3'), 
# ('가', 'b', '1'), ('가', 'b', '2'), ('가', 'b', '3'), 
# ('가', 'c', '1'), ('가', 'c', '2'), ('가', 'c', '3'), 
# ('나', 'a', '1'), ('나', 'a', '2'), ('나', 'a', '3'), 
# ('나', 'b', '1'), ('나', 'b', '2'), ('나', 'b', '3'), 
# ('나', 'c', '1'), ('나', 'c', '2'), ('나', 'c', '3'), 
# ('다', 'a', '1'), ('다', 'a', '2'), ('다', 'a', '3'), 
# ('다', 'b', '1'), ('다', 'b', '2'), ('다', 'b', '3'), 
# ('다', 'c', '1'), ('다', 'c', '2'), ('다', 'c', '3')

product(listname,repeat=2)

 

리턴값은 각 값이 아니라 해당 객체의 주소로 출력된다.

따라서 list나 tuple 형태로 변형해서 사용한다.

ex ) list(permutations(listname, n)

 

관련 알고리즘 풀어보기

프로그래머스 ) 소수 만들기 (Python)

반응형