Itertools em Python para Combinatória Eficiente

PythonBeginner
Pratique Agora

Introdução

Itertools é um módulo Python poderoso que fornece um conjunto de ferramentas rápidas, eficientes em termos de memória e flexíveis para trabalhar com iteradores. Essas ferramentas são úteis para resolver uma variedade de problemas combinatórios e podem economizar tempo e esforço ao lidar com grandes conjuntos de dados. Neste tutorial, exploraremos algumas funções-chave do módulo Itertools e forneceremos exemplos para ajudá-lo a entender seu uso.

Começando com Itertools

Para começar, você precisará importar o módulo Itertools. Ele está incluído na Biblioteca Padrão do Python, então você não precisa instalar nenhum pacote adicional.

import itertools

Funções Básicas do Itertools

chain

A função chain é usada para combinar múltiplos iteráveis em um único iterável. Ela recebe qualquer número de iteráveis como argumentos e retorna um único iterador que produz elementos dos iteráveis de entrada em sequência.

Exemplo:

Crie um projeto chamado chain.py no WebIDE e insira o seguinte conteúdo.

import itertools

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

## Chain the two lists together
result = itertools.chain(list1, list2)

## Print the elements of the chained iterator
for item in result:
    print(item)

Saída:

Insira python chain.py no Terminal. Em seguida, verifique a saída.

1
2
3
a
b
c

cycle

A função cycle é usada para criar um iterador que percorre os elementos de um iterável de entrada indefinidamente.

Exemplo:

Crie um projeto chamado cycle.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Create a cycle iterator from a list
cycle_iterator = itertools.cycle([1, 2, 3])

## Print the first 10 elements of the cycle iterator
for i, item in enumerate(cycle_iterator):
    if i >= 10:
        break
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

count

A função count cria um iterador que gera inteiros consecutivos indefinidamente, começando de um número especificado opcionalmente.

Exemplo:

Crie um projeto chamado count.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Create a count iterator starting from 5
count_iterator = itertools.count(5)

## Print the first 10 elements of the count iterator
for i, item in enumerate(count_iterator):
    if i >= 10:
        break
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

Funções de Itertools para Combinatória

product

A função product calcula o produto cartesiano de iteráveis de entrada. Ela recebe qualquer número de iteráveis como argumentos e um parâmetro opcional repeat, que especifica o número de repetições de cada iterável de entrada.

Exemplo:

Crie um projeto chamado product.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Compute the Cartesian product of two lists
list1 = [1, 2]
list2 = ['a', 'b']
product_iterator = itertools.product(list1, list2)

## Print the elements of the product iterator
for item in product_iterator:
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

permutations

A função permutations gera todas as permutações ordenadas possíveis de elementos de um iterável de entrada. Ela recebe um iterável e um inteiro opcional r como argumentos, especificando o comprimento das permutações.

Exemplo:

Crie um projeto chamado permutations.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Generate all permutations of length 2 from a list
list1 = [1, 2, 3]
permutations_iterator = itertools.permutations(list1, 2)

## Print the elements of the permutations iterator
for item in permutations_iterator:
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

combinations

A função combinations gera todas as combinações não ordenadas possíveis de elementos de um iterável de entrada. Ela recebe um iterável e um inteiro r como argumentos, especificando o comprimento das combinações.

Exemplo:

Crie um projeto chamado combinations.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Generate all combinations of length 2 from a list
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations(list1, 2)

## Print the elements of the combinations iterator
for item in combinations_iterator:
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

combinations_with_replacement

A função combinations_with_replacement gera todas as combinações não ordenadas possíveis de elementos de um iterável de entrada, permitindo elementos repetidos. Ela recebe um iterável e um inteiro r como argumentos, especificando o comprimento das combinações.

Exemplo:

Crie um projeto chamado cr.py no WebIDE e insira o seguinte conteúdo.

import itertools

## Generate all combinations with replacement of length 2 from a list
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations_with_replacement(list1, 2)

## Print the elements of the combinations_with_replacement iterator
for item in combinations_iterator:
    print(item)

Saída:

Use o seguinte comando para executar o script.

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

Resumo

Neste tutorial, cobrimos os fundamentos do módulo Itertools do Python e exploramos algumas de suas principais funções. O Itertools fornece um conjunto de ferramentas poderosas e eficientes em termos de memória para trabalhar com iteradores, que podem ajudá-lo a resolver vários problemas combinatórios com facilidade. Continue praticando e explorando o módulo para descobrir mais de suas capacidades e aprimorar suas habilidades de programação em Python.