반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (229)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (23)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 전공 요약 #데이터베이스
  • 언어
  • 백준
  • 전공 요약 #네트워크
  • 알고리즘
  • 오블완
  • nextjs
  • 삼성SW역량테스트
  • 나의 해방일지
  • 전공 요약 #운영체제
  • 면접
  • 공간복잡도
  • A형
  • 전공요약
  • 삼성SDS
  • Next.js #graphql #tailwind.css
  • 티스토리챌린지
  • GraphQL
  • 기계식키보드 #nuphy
  • C++

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

파이썬(python) 라이브러리 - itertools (순열, 조합, 누적합)
Python/라이브러리

파이썬(python) 라이브러리 - itertools (순열, 조합, 누적합)

2021. 4. 21. 13:34
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개 골라야한다 → 순열조합
같은 수를 여러 번 골라도 된다      → 중복 순열조합

 

 

문제집: N과 M (시리즈)

 

www.acmicpc.net

 

누적합  : 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]

 

관련 문제

백준 11399 : ATM

반응형
저작자표시 동일조건 (새창열림)

'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
    'Python/라이브러리' 카테고리의 다른 글
    • 파이썬(python) 라이브러리 - collections.Counter
    • 파이썬(python) 유용한 표준 라이브러리
    • 파이썬 라이브러리 - datetime
    • 파이썬 (python) 라이브러리 - Pandas 판다스
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바