-
[파이썬] 리스트 경우의 수, 조합 구하기Python 2021. 1. 12. 23:24반응형
리스트에서 두 개의 원소로 할 수 있는 조합을 구하라는 문제와 비슷한 걸 자주 마주칠 수 있는데요 그럴 때 itertools를 사용하면 쉽게 풀 수 있습니다.
from itertools import product from itertools import permutations from itertools import combinations
하나의 리스트에서 구할 때는 permutations과 combinations를 사용하면 되고 두 개 이상의 리스트에서 구할 때는 product를 사용하면 됩니다. permutations은 정확히는 순열이 되고 combinations는 조합이 되겠네요
a = [1,2,3] list(permutations(a, 2)) # [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
순열이기에 결과값에 순서가 영향이 있을 때 사용하시면 됩니다.
a = [1,2,3] list(combinations(a,2)) # [(1, 2), (1, 3), (2, 3)]
조합은 순서가 영향력이 없을 때 사용하시면 됩니다.
from itertools import product a = [[1,2,3], ['a','b'], ['!', '?']] list(product(*a)) # [(1, 'a', '!'), # (1, 'a', '?'), # (1, 'b', '!'), # (1, 'b', '?'), # (2, 'a', '!'), # (2, 'a', '?'), # (2, 'b', '!'), # (2, 'b', '?'), # (3, 'a', '!'), # (3, 'a', '?'), # (3, 'b', '!'), # (3, 'b', '?')]
product는 여러 리스트에서 추출할 때 사용됩니다.
반응형'Python' 카테고리의 다른 글
[케라스 에러]AttributeError: module 'keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects' (0) 2021.09.13 주피터 노트북 가상환경 사용하기 (0) 2021.06.30 [파이썬] 특정 문자로 문자열 나누기, 문자열 바꾸기 (0) 2021.01.12 [파이썬] 결정경계 그래프 그리기 (0) 2021.01.11 아나콘다 가상환경 삭제하기 (0) 2021.01.05