itertools in Python (4)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • Python 개발자
  • 중급 이상의 데이터 처리 및 이터레이터 활용 경험자
  • 이터레이터 기반의 효율적인 데이터 처리 방법을 배우고자 하는 사람들

핵심 요약

  • groupby(): key 함수를 통해 iterable 요소를 그룹화하여 반복자로 반환 (예: groupby(iterable, key=len))
  • islice(): start, stop, step 파라미터를 통해 iterable을 슬라이스 (예: islice(iterable, 0, 9, 1))
  • 핵심 특징: 두 함수 모두 이터레이터 기반의 메모리 효율적인 데이터 처리를 지원

섹션별 세부 요약

1. `groupby()` 함수

  • key 파라미터로 그룹화 기준 정의 (예: key=len으로 문자열 길이 기준 그룹화)
  • 반복자로 반환되며, next()로 요소 접근 가능
  • StopIteration 예외 처리 필수 (예: try-except 구문 활용)
  • 예시:

```python

from itertools import groupby

for key, x in groupby(['AB', 'CDE', 'FG'], key=len):

print(key, next(x)) # 2 AB, 3 CDE, 2 FG

```

2. `islice()` 함수

  • start, stop, step 파라미터로 슬라이싱 가능 (예: islice(range(10), 2, 8, 2))
  • None 값 사용 시 iterable의 끝까지 처리
  • step 생략 시 기본값 1 적용
  • 예시:

```python

from itertools import islice

for x in islice([-4, -3, -2, -1, 0, 1, 2, 3, 4], 3, 7):

print(x) # -2, -1, 0, 1

```

결론

  • groupby(): 동일한 key 값을 가진 요소를 그룹화하여 데이터 정리에 유리
  • islice(): 대규모 데이터의 부분 집합 처리 시 메모리 효율성 확보
  • 실무 팁: 이터레이터를 직접 조작할 때는 next()StopIteration 예외 처리를 반드시 포함하여 안정성을 확보하세요.