itertools

프로그래머스를 하다보면 반복적인 연산을 효율적으로 해야할 경우가 많습니다.

이를 단 하나의 패키지로 제공하는 것이 itertools 입니다.

 

import itertoolsCopy Icon

 

chain()

: value1과 value2를 순서대로 연결

itertools.chain(value1, value2)Copy Icon

 

count()

:1부터 n만큼 증가 무한반복

itertools.count(1, n)Copy Icon

 

combinations()

: 리스트 i에서 원소의 개수가 r개인 조합 추출

# itertools.combinations(i, r)

c = itertools.combinations('abc', 2)
for i in c:
	print(i)
    
# ('a', 'b')
# ('a', 'c')
# ('b', 'c')Copy Icon

 

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')Copy Icon

 

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')Copy Icon

 

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')
...Copy Icon

 


두 개 이상의 리스트가 주어졌을 때 조합 경우의 수 구하기

 

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)]Copy Icon

 

욱근욱