파이썬(Python) 리스트 모든 조합 구하기 (combination vs permutations vs product)
파이썬 (Python)에서 리스트에 있는 값들의 모든 조합을 구하기
파이썬에서 리스트에 있는 값들의 모든 조합을 구하기 위해서는 여러가지 방법이 있다. 파이썬 기본 라이브러리인 itertools을 사용하면 쉽게 구할 수 있다. 하지만 각각의 차이점을 알고 있어야 한다.
from itertools import product
from itertools import permutations
from itertools import combinations
사용시기
- 하나의 리스트에서 모든 조합을 계산을 해야 한다면, permutations, combinations을 사용
- 두개 이상의 리스트에서 모든 조합을 계산해야 한다면, product를 사용
하나의 리스트에서 모든 조합을 구하기
items = ['1', '2', '3', '4', '5']
from itertools import permutations
list(permutations(items, 2))
# [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '1'), ('2', '3'), ('2', '4'), ('2', '5'), ('3', '1'), ('3', '2'), ('3', '4'), ('3', '5'), ('4', '1'), ('4', '2'), ('4', '3'), ('4', '5'), ('5', '1'), ('5', '2'), ('5', '3'), ('5', '4')]
from itertools import combinations
list(combinations(items, 2))
# [('1', '2'), ('1', '3'), ('1', '4'), ('1', '5'), ('2', '3'), ('2', '4'), ('2', '5'), ('3', '4'), ('3', '5'), ('4', '5')]
두개 이상의 리스트의 모든 조합 구하기
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', '!'), ('a', '3', '@'), ('a', '3', '#'), ('a', '4', '!'), ('a', '4', '@'), ('a', '4', '#'), ('b', '1', '!'), ('b', '1', '@'), ('b', '1', '#'), ('b', '2', '!'), ('b', '2', '@'), ('b', '2', '#'), ('b', '3', '!'), ('b', '3', '@'), ('b', '3', '#'), ('b', '4', '!'), ('b', '4', '@'), ('b', '4', '#'), ('c,', '1', '!'), ('c,', '1', '@'), ('c,', '1', '#'), ('c,', '2', '!'), ('c,', '2', '@'), ('c,', '2', '#'), ('c,', '3', '!'), ('c,', '3', '@'), ('c,', '3', '#'), ('c,', '4', '!'), ('c,', '4', '@'), ('c,', '4', '#')]
'Python > Python 프로그래밍' 카테고리의 다른 글
[파이썬] 튜블 정렬 하는 방법 (0) | 2021.04.28 |
---|---|
[파이썬] Jupyter 한글 깨짐 현상 (0) | 2021.04.28 |
[Python] Pandas csv를 dataframe으로 읽고 쓰는 방법 (0) | 2021.04.28 |
[파이썬] gzip.open, zcat & pipeline 성능비교 (0) | 2021.04.28 |
파이썬(Python) 한글 문자 길이 (0) | 2021.04.28 |
C를 Python으로 Wrapping하는 방법 (0) | 2021.04.28 |
파이썬 HTML 파싱 하는 방법 (0) | 2021.04.28 |
파이썬 스케일이 다른 그래프 (0) | 2021.04.28 |