오늘은 파이썬의 표준 라이브러리중 하나인 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의 사용법을 연습할 수 있습니다.
'하루 30분 컴퓨터 비전 공부하기' 카테고리의 다른 글
Vision Linear Classifiers가 입력 데이터를 처리하고 결과를 해석하는 방식 (1) | 2024.12.06 |
---|