[Python] 리스트의 조합 찾기

HOU·2022년 6월 8일
0

Python

목록 보기
5/6


코딩테스트 문제를 푸는 도중에 리스트 안에서 3개의 요소를 가지고 와서 합해야하는 문제가 있었는데, 삼중 for문을 돌리면서 진행해서 풀고보니 combination이라는 함수가 존재했다. 이번 기회에 정리 해보도록 하자!
3중 for 문 문제

리스트에 있는 값들 조합 구하기

파이썬에는 리스트에 있는 값을 조합하는 기본 내장 method가 존재하는데 라이브러리 itertools에 존재한다. 라이브러리 호출 방법은 아래와 같다.

from itertools import product
from itertools import permutaions
from itertools import combinations

사용방법

사용시기

  1. 하나의 배열에서 사용할 때는 permuations,combinations
  2. 두개 이상의 배열에서는 product를 사용한다.

한 배열에서 조합 찾기

from itertools import permutaions, combinations
items = [1,2,3,4]
#permutations
list(permutations(items, 2))
#[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

#combinations
list(combinations(items, 2))
#[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]

permutationcombinations의 차이는 무엇인가.
중복 여부의 차이다, permutation은 모든 경우의 수를 반환하지만 ex) (1, 2), (2, 1) combination은 중복을 제외하고 모든 경우의 수를 만들어 준다.

두개 이상의 배열에서 조합 찾기

from itertools import product
items = [['a', 'b', 'c'], [1, 2, 3, 4],['!','@','$']]
list(product(*items))
"""[('a', 1, '!'),
 ('a', 1, '@'),
 ('a', 1, '%'),
 ('a', 2, '!'),
 ('a', 2, '@'),
 ('a', 2, '%'),
 ('a', 3, '!')....."""

마무리

배열의 조합을 알아내는 파이썬 함수에 대해 알아보았다. 생각보다 파이썬엔 너무 다양한 기능들이 많다. 잊지 않도록 더 잘 기록하고 자주 사용해봐야겠다.

profile
하루 한 걸음 성장하는 개발자

0개의 댓글