효율적인 조합을 위한 Python Itertools

PythonBeginner
지금 연습하기

소개

Itertools 는 반복자 (iterator) 작업을 위한 빠르고, 메모리 효율적이며, 유연한 도구 집합을 제공하는 강력한 Python 모듈입니다. 이 도구들은 다양한 조합 문제 해결에 유용하며, 대규모 데이터 세트를 처리할 때 시간과 노력을 절약할 수 있습니다. 이 튜토리얼에서는 Itertools 모듈의 몇 가지 주요 함수를 살펴보고, 사용법을 이해하는 데 도움이 되는 예제를 제공합니다.

Itertools 시작하기

시작하려면 Itertools 모듈을 import 해야 합니다. Python 표준 라이브러리에 포함되어 있으므로, 추가 패키지를 설치할 필요가 없습니다.

import itertools

기본 Itertools 함수

chain

chain은 여러 반복 가능 객체 (iterable) 를 단일 반복 가능 객체로 결합하는 데 사용됩니다. 임의의 수의 반복 가능 객체를 인수로 받아들이고, 입력 반복 가능 객체의 요소를 순서대로 생성하는 단일 반복자 (iterator) 를 반환합니다.

예시:

WebIDE 에서 chain.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

## 두 리스트를 연결합니다.
result = itertools.chain(list1, list2)

## 연결된 반복자의 요소를 출력합니다.
for item in result:
    print(item)

출력:

터미널에서 python chain.py를 입력합니다. 그런 다음 출력을 확인합니다.

1
2
3
a
b
c

cycle

cycle은 입력 반복 가능 객체의 요소를 무한정 순환하는 반복자를 생성하는 데 사용됩니다.

예시:

WebIDE 에서 cycle.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 리스트에서 cycle 반복자를 생성합니다.
cycle_iterator = itertools.cycle([1, 2, 3])

## cycle 반복자의 처음 10 개 요소를 출력합니다.
for i, item in enumerate(cycle_iterator):
    if i >= 10:
        break
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python cycle.py
1
2
3
1
2
3
1
2
3
1

count

count는 선택적으로 지정된 숫자부터 시작하여 무한정 연속 정수를 생성하는 반복자를 생성합니다.

예시:

WebIDE 에서 count.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 5 부터 시작하는 count 반복자를 생성합니다.
count_iterator = itertools.count(5)

## count 반복자의 처음 10 개 요소를 출력합니다.
for i, item in enumerate(count_iterator):
    if i >= 10:
        break
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python count.py
5
6
7
8
9
10
11
12
13
14

조합 Itertools 함수

product

product는 입력 반복 가능 객체의 데카르트 곱 (Cartesian product) 을 계산합니다. 임의의 수의 반복 가능 객체를 인수로 받으며, 각 입력 반복 가능 객체의 반복 횟수를 지정하는 선택적 repeat 매개변수를 사용합니다.

예시:

WebIDE 에서 product.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 두 리스트의 데카르트 곱을 계산합니다.
list1 = [1, 2]
list2 = ['a', 'b']
product_iterator = itertools.product(list1, list2)

## product 반복자의 요소를 출력합니다.
for item in product_iterator:
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python product.py
(1, 'a')
(1, 'b')
(2, 'a')
(2, 'b')

permutations

permutations는 입력 반복 가능 객체의 요소에서 가능한 모든 순서가 지정된 순열 (permutation) 을 생성합니다. 반복 가능 객체와 순열의 길이를 지정하는 선택적 정수 r을 인수로 받습니다.

예시:

WebIDE 에서 permutations.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 리스트에서 길이 2 의 모든 순열을 생성합니다.
list1 = [1, 2, 3]
permutations_iterator = itertools.permutations(list1, 2)

## permutations 반복자의 요소를 출력합니다.
for item in permutations_iterator:
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python permutations.py
(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)

combinations

combinations는 입력 반복 가능 객체의 요소에서 가능한 모든 순서가 지정되지 않은 조합 (combination) 을 생성합니다. 반복 가능 객체와 조합의 길이를 지정하는 정수 r을 인수로 받습니다.

예시:

WebIDE 에서 combinations.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 리스트에서 길이 2 의 모든 조합을 생성합니다.
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations(list1, 2)

## combinations 반복자의 요소를 출력합니다.
for item in combinations_iterator:
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python combinations.py
(1, 2)
(1, 3)
(2, 3)

combinations_with_replacement

combinations_with_replacement는 입력 반복 가능 객체의 요소에서 가능한 모든 순서가 지정되지 않은 조합을 생성하며, 중복된 요소를 허용합니다. 반복 가능 객체와 조합의 길이를 지정하는 정수 r을 인수로 받습니다.

예시:

WebIDE 에서 cr.py라는 프로젝트를 생성하고 다음 내용을 입력합니다.

import itertools

## 리스트에서 길이 2 의 모든 중복 조합을 생성합니다.
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations_with_replacement(list1, 2)

## combinations_with_replacement 반복자의 요소를 출력합니다.
for item in combinations_iterator:
    print(item)

출력:

다음 명령을 사용하여 스크립트를 실행합니다.

python cr.py
(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)

요약

이 튜토리얼에서는 Python Itertools 모듈의 기본 사항을 다루고 주요 함수 중 일부를 살펴보았습니다. Itertools 는 반복자를 사용하여 작업하기 위한 강력하고 메모리 효율적인 도구 집합을 제공하며, 이를 통해 다양한 조합 문제를 쉽게 해결할 수 있습니다. 더 많은 기능을 발견하고 Python 프로그래밍 기술을 향상시키기 위해 계속 연습하고 모듈을 탐색하십시오.