코딩테스트 문제를 푸는 도중에 리스트 안에서 3개의 요소를 가지고 와서 합해야하는 문제가 있었는데, 삼중 for문을 돌리면서 진행해서 풀고보니 combination
이라는 함수가 존재했다. 이번 기회에 정리 해보도록 하자!
3중 for 문 문제
파이썬에는 리스트에 있는 값을 조합하는 기본 내장 method가 존재하는데 라이브러리 itertools에 존재한다. 라이브러리 호출 방법은 아래와 같다.
from itertools import product
from itertools import permutaions
from itertools import combinations
permuations
,combinations
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)]
permutation
과 combinations
의 차이는 무엇인가.
중복 여부의 차이다, 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, '!')....."""
배열의 조합을 알아내는 파이썬 함수에 대해 알아보았다. 생각보다 파이썬엔 너무 다양한 기능들이 많다. 잊지 않도록 더 잘 기록하고 자주 사용해봐야겠다.