본문 바로가기
Programming/Python

Python 순열, 조합 (permutations, combinations, product)

by 데이터현 2021. 9. 27.

파이썬 기본 라이브러리 itertools를 활용해서 여러 조합을 구할 수 있다.

num_list = [1,2,3,4]

# 순서 상관 있을 경우
from itertools import permutations
list(permutations(num_list,2))
list(permutations(num_list,3))
# [(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
# [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)]

# 순서 상관 없을 경우
from itertools import combinations
list(combinations(num_list,2))
list(combinations(num_list,3))
# [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
# [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

# 여러 리스트, 문자열을 통해 곱집합 구하기
from itertools import product

iterable1 = 'ABC'
iterable2 = ['cat','dog']
iterable3 = 'hi'
list(product(iterable1, iterable2, iterable3))
# [('A', 'cat', 'h'), ('A', 'cat', 'i'), ('A', 'dog', 'h'), ('A', 'dog', 'i'), ('B', 'cat', 'h'), ('B', 'cat', 'i'), ('B', 'dog', 'h'), ('B', 'dog', 'i'), ('C', 'cat', 'h'), ('C', 'cat', 'i'), ('C', 'dog', 'h'), ('C', 'dog', 'i')]

 

 

하단은 itertools.combination을 활용한 문제.

 

[Programmers] 소수 만들기(Python) - 프로그래머스

https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가..

hkim-data.tistory.com

 

댓글