728x90
itertools는 반복 작업을 보다 효율적으로 처리할 수 있게 해주는 파이썬 표준 라이브러리입니다. 조합, 순열, 누적합, 무한 반복 등 다양한 반복자(iterator)를 생성하는 도구들을 제공하여, 복잡한 반복 로직을 간결하게 만들 수 있습니다.
● itertools 모듈이란?
itertools
는 반복 가능한 객체를 생성하거나 조작하는 데 특화된 함수들을 모아둔 모듈로, 대부분의 함수들이 이터레이터
를 반환하여 메모리 효율이 뛰어납니다.
● 주요 함수 소개
- count(start=0, step=1): 무한히 증가하는 수열 생성
- cycle(iterable): iterable을 무한 반복
- repeat(elem, n): 동일한 요소를 n번 반복
- accumulate(iterable): 누적합 또는 누적함수 적용
- product(iter1, iter2): 데카르트 곱
- permutations(iter, r): r개의 순열
- combinations(iter, r): r개의 조합
- groupby(iterable, key): 키 함수를 기준으로 그룹화
● 사용 예제
import itertools
# 1부터 무한 증가하는 수
counter = itertools.count(1, 2)
print(next(counter)) # 1
print(next(counter)) # 3
# 누적합
data = [1, 2, 3, 4]
print(list(itertools.accumulate(data))) # [1, 3, 6, 10]
# 조합
colors = ['red', 'blue', 'green']
for c in itertools.combinations(colors, 2):
print(c)
● groupby 예제
from itertools import groupby
data = ['apple', 'apricot', 'banana', 'blueberry', 'cherry']
data.sort(key=lambda x: x[0]) # 첫 글자 기준 정렬
for key, group in groupby(data, key=lambda x: x[0]):
print(key, list(group))
위 코드는 첫 글자를 기준으로 단어들을 그룹화합니다.
● 마무리
itertools는 반복 구조를 보다 효율적이고 우아하게 구현할 수 있게 해주는 강력한 도구입니다. 반복문을 작성할 때 불필요한 변수 사용이나 중복 로직을 줄이고자 한다면 반드시 활용해보시기 바랍니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter16. heapq와 우선순위 큐 (0) | 2025.05.23 |
---|---|
[파이썬][중급] Chapter14. collections 모듈 (deque, Counter 등) (0) | 2025.05.18 |
[파이썬][중급] Chapter12. 이터레이터와 커스텀 반복자 만들기 (0) | 2025.05.18 |
[파이썬][중급] Chapter11. 제너레이터 함수와 yield (0) | 2025.05.18 |
[파이썬][중급] Chapter10. 데코레이터 함수의 작성과 활용 (0) | 2025.05.18 |