728x90
반응형
itertools 라이브러리
순열 : 서로다른 n개 에서 서로 다른 r개 선택하여 순서대로 나열
list(permutations(data, 선택할 개수))
from itertools import permutations
a=list(permutations(data,1))
b=list(permutations(data,2))
c=list(permutations(data,3))
data = ['A','B','C']
[('A',), ('B',)]
[('A', 'B'), ('B', 'A')]
[]
data = [1,2]
[(1,), (2,)]
[(1, 2), (2, 1)]
[]
data = ['A','B','C']
[('A',), ('B',), ('C',)]
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]
data = [1,2,3]
[(1,), (2,), (3,)]
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
조합 : 서로다른 n개에서 순서 상관없이 서로 다른 r개 선택
list(combinations(data, 선택할 개수))
from itertools import combinations
a=list(combinations(data,1))
b=list(combinations(data,2))
c=list(combinations(data,3))
data = ['A','B']
[('A',), ('B',)]
[('A', 'B')]
[]
data = [1,2]
[(1,), (2,)]
[(1, 2)]
[]
data = ['A','B','C']
[('A',), ('B',), ('C',)]
[('A', 'B'), ('A', 'C'), ('B', 'C')]
[('A', 'B', 'C')]
data = [1,2,3]
[(1,), (2,), (3,)]
[(1, 2), (1, 3), (2, 3)]
[(1, 2, 3)]
중복 순열 : 서로다른 n개 에서 중복허용하여 r개 선택하여 순서대로 나열
list(product(data, repeat=선택할 개수))
from itertools import product
a=list(product(data, repeat=1))
b=list(product(data, repeat=2))
c=list(product(data, repeat=3))
data = ['A','B']
[('A',), ('B',)]
[('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'B', 'A'), ('A', 'B', 'B'), ('B', 'A', 'A'), ('B', 'A', 'B'), ('B', 'B', 'A'), ('B', 'B', 'B')]
data = [1,2]
[(1,), (2,)]
[(1, 1), (1, 2), (2, 1), (2, 2)]
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2), (2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
data = ['A','B','C']
[('A',), ('B',), ('C',)]
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')]
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'A'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'A'), ('A', 'C', 'B'), ('A', 'C', 'C'), ('B', 'A', 'A'), ('B', 'A', 'B'), ('B', 'A', 'C'), ('B', 'B', 'A'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'A'), ('B', 'C', 'B'), ('B', 'C', 'C'), ('C', 'A', 'A'), ('C', 'A', 'B'), ('C', 'A', 'C'), ('C', 'B', 'A'), ('C', 'B', 'B'), ('C', 'B', 'C'), ('C', 'C', 'A'), ('C', 'C', 'B'), ('C', 'C', 'C')]
data = [1,2,3]
[(1,), (2,), (3,)]
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 1), (1, 3, 2), (1, 3, 3), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 1), (3, 3, 2), (3, 3, 3)]
중복 조합 : 서로다른 n개에서 중복 허용하여 순서 상관없이 선택
list(combinations_with_replacement(data, 선택할 개수))
from itertools import combinations_with_replacement
a=list(combinations_with_replacement(data,1))
b=list(combinations_with_replacement(data,2))
c=list(combinations_with_replacement(data,3))
data = ['A','B']
[('A',), ('B',)]
[('A', 'A'), ('A', 'B'), ('B', 'B')]
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'B', 'B'), ('B', 'B', 'B')]
data = [1,2]
[(1,), (2,)]
[(1, 1), (1, 2), (2, 2)]
[(1, 1, 1), (1, 1, 2), (1, 2, 2), (2, 2, 2)]
data = ['A','B','C']
[('A',), ('B',), ('C',)]
[('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'B'), ('B', 'C'), ('C', 'C')]
[('A', 'A', 'A'), ('A', 'A', 'B'), ('A', 'A', 'C'), ('A', 'B', 'B'), ('A', 'B', 'C'), ('A', 'C', 'C'), ('B', 'B', 'B'), ('B', 'B', 'C'), ('B', 'C', 'C'), ('C', 'C', 'C')]
data = [1,2,3]
[(1,), (2,), (3,)]
[(1, 1), (1, 2), (1, 3), (2, 2), (2, 3), (3, 3)]
[(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 2, 3), (1, 3, 3), (2, 2, 2), (2, 2, 3), (2, 3, 3), (3, 3, 3)]
순열 조합은 N과 M 시리즈를 풀어보면 마스터 된다.
순열 vs 조합
뽑은 수열은 오름차순 이어야한다 → 조합
중복 vs 그냥
N개 중 중복 없이 M개 골라야한다 → 순열조합
같은 수를 여러 번 골라도 된다 → 중복 순열조합
누적합 : iterbale의 누적합을 구하여 iterable객체로 반환
itertools.accumulate(iteratble)
import sys
import itertools
a = itertools.accumulate([1,2,3,4,5])
print(a)
<itertools.accumulate object at 0x00000219AD7DC680>
print(list(a))
[1, 3, 6, 10, 15]
관련 문제
반응형
'Python > 라이브러리' 카테고리의 다른 글
파이썬(python) 라이브러리 - collections.Counter (0) | 2021.04.21 |
---|---|
파이썬(python) 유용한 표준 라이브러리 (0) | 2021.04.21 |
파이썬 라이브러리 - datetime (0) | 2021.03.23 |
파이썬 (python) 라이브러리 - Pandas 판다스 (0) | 2021.03.22 |
파이썬 (python) 라이브러리 - finpie (1) | 2021.03.19 |