itertools
프로그래머스를 하다보면 반복적인 연산을 효율적으로 해야할 경우가 많습니다.
이를 단 하나의 패키지로 제공하는 것이 itertools 입니다.
import itertools
chain()
: value1과 value2를 순서대로 연결
itertools.chain(value1, value2)
count()
:1부터 n만큼 증가 무한반복
itertools.count(1, n)
combinations()
: 리스트 i에서 원소의 개수가 r개인 조합 추출
# itertools.combinations(i, r)
c = itertools.combinations('abc', 2)
for i in c:
print(i)
# ('a', 'b')
# ('a', 'c')
# ('b', 'c')
combinations_with_replacement()
: 리스트 i에서 원소의 개수가 r개인 중복 조합 추출
# itertools.combinations_with_replacement(i, r)
c = itertools.combinations_with_replacement('abc', 2)
for i in c:
print(i)
# ('a', 'a')
# ('a', 'b')
# ('a', 'c')
# ('b', 'b')
# ('b', 'c')
# ('c', 'c')
permutations()
: 리스트 i에서 원소의 개수가 r개인 순열 추출
# itertools.permutations(i, r)
p = itertools.permutations('abc', 2)
for i in c:
print(i)
# ('a', 'b')
# ('a', 'c')
# ('b', 'a')
# ('b', 'c')
# ('c', 'a')
# ('c', 'b')
product()
: 리스트 i를 r번 조합하는 모든 경우의 수 추출
# itertools.product(i, r)
p = itertools.product('abc', 3)
for i in p:
print(i)
# ('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')
...
두 개 이상의 리스트가 주어졌을 때 조합 경우의 수 구하기
import itertools
a_list = ['aa', 'bb', 'cc', 'dd']
b_list = [1, 2, 3]
all_list = list()
all_list.append(a_list)
all_list.append(b_list)
all_product = list(itertools.product(*all_list))
print(all_product)
# [('aa', 1), ('aa', 2), ('aa', 3), ('bb', 1), ('bb', 2), ('bb', 3), ('cc', 1), ('cc', 2), ('cc', 3), ('dd', 1), ('dd', 2), ('dd', 3)]
'Python > 모듈 & 패키지 & 라이브러리' 카테고리의 다른 글
[Python] set 집합 (0) | 2022.10.18 |
---|---|
[Python] collections.Counter (0) | 2022.08.02 |
[Python] cmp_to_key() - 원하는 기준으로 sort() (정렬) 하기 (0) | 2022.06.01 |
[Python] re (정규 표현식) (0) | 2022.05.14 |
[Python] Image Labeling Tool(labelimg) 설치 및 사용 방법 (0) | 2021.11.22 |