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