본문 바로가기

하루 30분 컴퓨터 비전 공부하기

[파이썬] itertools count, 조합, 순열 사용방법

오늘은 파이썬의 표준 라이브러리중 하나인 itertools에 대해 알아보도록 하겠습니다.
itertools는 코테에서도 많이 사용되는데요. 자주 사용되는 count와 조합, 순열 함수들 위주로 살펴보겠습니다.
파이썬 공식문서

 

더보기

iterator란?

* 파이썬에서 반복 가능한 객체(Iterable)의 데이터를 순회하며, 차례대로 각 항목들에 접근할 수 있는 인터페이스를 제공하는 객체입니다.

 

반복가능한 객체란?

* 파이썬에서 순회 가능한 객체를 말합니다. 이는 객체 내의 요소들을 순차적으로 하나씩 접근할 수 있는 객체를 의미합니다.

*리스트, 퓨플, 셋, 사전, 문자열

 

for문과 itertator의 차이

* for 루프는 반복 작업을 수행하는 데 사용되는 문법적인 구조이고, 이터레이터는 데이터를 반복하는 방법 중 하나로 for 루프의 기반이 됩니다.

* for 루프는 이터레이터를 사용하여 반복작업을 수행합니다. 이터레이터를 생성하고 내부적으로 next() 함수를 호출하여 시퀀스의 항목을 하나씩 가져옵니다.

 

itertools

: 파이썬의 표준 라이브러리중 하나로 iterator를 다루는 유용한 기능들을 제공하는 모듈.

 

파이썬의 itertools는 빠르고 메모리 효율적인 반복을 위해 이터레이터 대수(iterator algebra)를 형성합니다.

itertools는 반복작업을 할 때 반복자와 관련된 많은 유용한 함수를 제공합니다. 이러한 함수들은 코드를 더 효율적이고 가독성 있게 작성하는데 도움이 됩니다.

 

count(start = 0, step = 1)

: start로 시작하여 step간격 만큼의 무한한 정수를 생성.

from itertools import count
for i in count(10,1):
    print(i)
# 출력값
10
11
12
13
14
15
.
.
.

 

조합 / 순열

 

product(*iterables, repeat = 1)

: 입력 iterables의 데카르트 곱을 생성.
데카르트 곱 : 두 집합 A, B의 곱집합 AxB

from itertools import product
data = [1, 2, 3]
product_list = list(product(data, 2))
print(product)
# 출력값
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

 

permutations(iterable, r = none)

: 입력 iterable에서 원소 개수가 r개인 중복되지 않는 순열을 생성.

from itertools import permutations
data = [1,2,3]
permutations_list = list(permutations(data, 2))
print(permutations_list)
# 출력값
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

 

combinations(iterable, r)

: 입력 iterable에서 원소 개수가 r개인 중복되지 않는 조합을 정렬된 순서로 생성.

from itertools import combinations
data = [1, 2, 3, 1]
combinations_list = list(combinations(data, 2))
print(combinations_list)
# 출력값
[(1, 2), (1, 3), (1, 1), (2, 3), (2, 1), (3, 1)]

 

combinations_with_replacement(iterable, r)

: 입력 iterable에서 원소 개수가 r개인 중복 조합을 정렬된 순서로 생성.

from itertools import combinations_with_replacement
data = [1, 2, 3, 1]
combinations_with_replacement_list = list(combinations_with_replacement(data, 2))
print(combinations_with_replacement_list)
# 출력값
[(1, 1), (1, 2), (1, 3), (1, 1), (2, 2), (2, 3), (2, 1), (3, 3), (3, 1), (1, 1)]

 

적용하기

 

백준의 N과 M 문제를 풀어보시면 itertoolsr의 사용법을 연습할 수 있습니다.