[python] itertools에 대해 알아보자

김동욱·2024년 5월 16일

python

목록 보기
5/6
post-thumbnail

itertools란

itertools는 반복 가능한 데이터 스트림을 효율적으로 처리하기 위한 다양한 함수를 제공하는 파이썬 표준 라이브러리이다. 이 라이브러리를 사용하면 반복 작업을 간결하고 효율적으로 수행할 수 있다. 많은 itertools 함수들은 제네레이터의 원리를 사용하여 이터레이터를 생성하며, 필요한 시점에 값을 하나씩 생성하는 방식으로 메모리 사용을 최적화한다.

itertools 모듈의 주요 메서드

count

count 함수는 무한히 증가하는 정수를 생성하는 이터레이터를 반환한다.

import itertools

result = itertools.count(1, 2.5)
print(next(result))  # 1
print(next(result))  # 3.5
print(next(result))  # 6.0
print(next(result))  # 8.5

takewhile

takewhile 함수는 주어진 조건을 만족하는 동안 요소를 생성한다.

import itertools

result = itertools.takewhile(lambda n: n < 10, itertools.count(1, 2.5))
for v in result:
    print(v)
    
# 출력: 1, 3.5, 6.0, 8.5

filterfalse

filterfalse 함수는 주어진 조건을 만족하지 않는 요소만을 생성한다.

import itertools

result = itertools.filterfalse(lambda n: n < 3, [1, 2, 3, 4, 5])
for v in result:
    print(result)
    
# 출력: 3, 4, 5

accumulate

accumulate 함수는 주어진 이터러블의 누적 합을 계산한다.

import itertools

result = itertools.accumulate(range(1, 6))
for v in result:
    print(v)
    
# 출력: 1, 3, 6, 10, 15

chain

chain 함수는 여러 이터러블을 하나로 연결하여 단일 이터레이터를 생성한다.

import itertools

result = itertools.chain('ABCDE', range(1, 6))
print(list(result))

# 출력: ['A', 'B', 'C', 'D', 'E', 1, 2, 3, 4, 5]

product

product 함수는 주어진 이터러블의 카티전 곱을 계산한다.

import itertools

result = itertools.product('AB', repeat=2)
print(list(result))

# 출력: [('A', 'A'), ('A', 'B'), ('B', 'A'), ('B', 'B')]

groupby

groupby 함수는 주어진 이터러블을 그룹으로 묶어 반환한다.

import itertools

result = itertools.groupby('AAABBCCCCDDEEE')
for key, group in result:
    print(key, ':', list(group))
    
# 출력:
# A : ['A', 'A', 'A']
# B : ['B', 'B']
# C : ['C', 'C', 'C', 'C']
# D : ['D', 'D']
# E : ['E', 'E', 'E']

permutations

permutations 함수는 주어진 이터러블의 모든 순열을 생성한다.

import itertools

result = itertools.permutations('ABC', 2)
print(list(result))

# 출력: [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

combinations

combinations 함수는 주어진 이터러블의 모든 조합을 생성한다.

import itertools

result = itertools.combinations('ABC', 2)
print(list(result))

# 출력: [('A', 'B'), ('A', 'C'), ('B', 'C')]
profile
안녕하세요! 질문과 피드백은 언제든지 환영입니다:)

0개의 댓글