본문 바로가기

라이브러리

파이썬(Python) itertools 사용법 정리

itertools 모듈은 반복 가능한(iterable) 객체를 다루는데 사용되는 유용한 함수들을 제공합니다. itertools는 다양한 기능을 제공하여 여러 종류의 이터레이터를 다룰 수 있습니다. 이번에는 itertools 모듈에서 가장 자주 사용되는 함수들에 대해 알아보겠습니다.


1. count


count는 무한히 반복되는 이터레이터를 만듭니다. 시작값(start)과 증가값(step)을 인자로 받습니다.

from itertools import count

# 무한한 이터레이터 생성
counter = count(start=0, step=1)

# 다섯번째 값까지 출력
for i in range(5):
    print(next(counter))

2. cycle


cycle은 주어진 이터레이터를 무한히 반복합니다.

from itertools import cycle

# 무한한 이터레이터 생성
colors = cycle(['red', 'green', 'blue'])

# 다섯번째 값까지 출력
for i in range(5):
    print(next(colors))


3. repeat


repeat는 주어진 값을 무한히 반복합니다. 옵션으로 반복 횟수를 지정할 수 있습니다.

from itertools import repeat

# 3번 반복하는 이터레이터 생성
repeater = repeat('Hello', 3)

# 모든 값을 출력
for i in repeater:
    print(i)

4. chain


chain은 여러 이터레이터를 하나로 합칩니다.

from itertools import chain

# 여러 이터레이터를 하나로 합치기
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
combined = chain(numbers, letters)

# 하나로 합쳐진 이터레이터 출력
for i in combined:
    print(i)



5. compress


compress는 데이터와 선택적인 불리언 값을 가지는 선택자(iterable)를 받아서 선택자가 참(True)인 값만 반환합니다.

from itertools import compress

# compress 예제
data = [1, 2, 3, 4, 5, 6, 7, 8]
selector = [True, False, True, False, True, False, True, False]
result = compress(data, selector)

# 선택된 값만 출력
for i in result:
    print(i)


6. dropwhile


dropwhile은 주어진 함수가 True를 반환하는 동안 이터레이터의 값을 무시합니다. 함수가 False를 반환하면 나머지 값을 반환합니다.

from itertools import dropwhile

# dropwhile 예제
data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
result = dropwhile(lambda x: x % 2 != 0, data)

# 함수가 False를 반환하는 이후의 값만 출력
for i in result:
    print(i)


7. takewhile


takewhile은 주어진 함수가 True를 반환하는 동안 이터레이터의 값을 반환합니다. 함수가 False를 반환하면 값을 반환하지 않고 종료합니다.

from itertools import takewhile

# takewhile 예제
data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
result = takewhile(lambda x: x % 2 != 0, data)

# 함수가 False를 반환하기 전까지의 값만 출력
for i in result:
    print(i)



8. accumulate


accumulate는 이터레이터의 모든 값을 누적하여 반환합니다. 누적 함수를 지정할 수 있으며, 기본적으로 덧셈 연산을 수행합니다.

from itertools import accumulate

# accumulate 예제
data = [1, 2, 3, 4, 5]
result = accumulate(data)

# 모든 값을 누적하여 출력
for i in result:
    print(i)


9. groupby

groupby는 이터레이터에서 연속적으로 나오는 값들을 그룹화합니다. 그룹화 함수를 지정할 수 있으며, 기본적으로 값이 같은 경우 그룹으로 묶습니다.

from itertools import groupby

# groupby 예제
data = [1, 1, 2, 2, 3, 3, 4, 4]
result = groupby(data)

# 그룹화된 결과 출력
for key, group in result:
    print(key, list(group))


10. product


product는 두 개 이상의 이터레이터의 모든 조합을 반환합니다.

from itertools import product

# product 예제
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
result = product(numbers, letters)

# 모든 조합 출력
for i in result:
    print(i)


이외에도 itertools 모듈은 많은 함수들을 제공합니다. itertools의 모든 함수들에 대해 자세한 내용은 공식 문서를 참조하시기 바랍니다.