Python Itertools pour une combinatoire efficace

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Itertools est un module Python puissant qui fournit un ensemble d'outils rapides, économes en mémoire et flexibles pour travailler avec des itérateurs. Ces outils sont pratiques pour résoudre une variété de problèmes combinatoires et peuvent vous épargner du temps et des efforts lors de la manipulation de grands ensembles de données. Dans ce tutoriel, nous explorerons quelques fonctions clés du module Itertools et fournirons des exemples pour vous aider à comprendre leur utilisation.

Commencer avec Itertools

Pour commencer, vous devrez importer le module Itertools. Il est inclus dans la bibliothèque standard Python, donc vous n'avez pas besoin d'installer de packages supplémentaires.

import itertools

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/AdvancedTopicsGroup -.-> python/iterators("Iterators") python/AdvancedTopicsGroup -.-> python/generators("Generators") subgraph Lab Skills python/standard_libraries -.-> lab-7840{{"Python Itertools pour une combinatoire efficace"}} python/iterators -.-> lab-7840{{"Python Itertools pour une combinatoire efficace"}} python/generators -.-> lab-7840{{"Python Itertools pour une combinatoire efficace"}} end

Fonctions de base d'Itertools

chain

La fonction chain est utilisée pour combiner plusieurs itérables en un seul itérable. Elle prend un nombre quelconque d'itérables en arguments et renvoie un seul itérateur qui produit les éléments des itérables d'entrée séquentiellement.

Exemple :

Créez un projet appelé chain.py dans WebIDE et entrez le contenu suivant.

import itertools

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

## Chainez les deux listes ensemble
result = itertools.chain(list1, list2)

## Affichez les éléments de l'itérateur chaîné
for item in result:
    print(item)

Sortie :

Entrez python chain.py dans le terminal. Puis vérifiez la sortie.

1
2
3
a
b
c

cycle

La fonction cycle est utilisée pour créer un itérateur qui parcourt indéfiniment les éléments d'un itérable d'entrée.

Exemple :

Créez un projet appelé cycle.py dans WebIDE et entrez le contenu suivant.

import itertools

## Créez un itérateur cycle à partir d'une liste
cycle_iterator = itertools.cycle([1, 2, 3])

## Affichez les 10 premiers éléments de l'itérateur cycle
for i, item in enumerate(cycle_iterator):
    if i >= 10:
        break
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

count

La fonction count crée un itérateur qui génère des entiers consécutifs indéfiniment, à partir d'un nombre spécifié optionnel.

Exemple :

Créez un projet appelé count.py dans WebIDE et entrez le contenu suivant.

import itertools

## Créez un itérateur count à partir de 5
count_iterator = itertools.count(5)

## Affichez les 10 premiers éléments de l'itérateur count
for i, item in enumerate(count_iterator):
    if i >= 10:
        break
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

Fonctions d'Itertools combinatoires

product

La fonction product calcule le produit cartésien d'itérables d'entrée. Elle prend un nombre quelconque d'itérables en arguments et un paramètre optionnel repeat, qui spécifie le nombre de répétitions de chaque itérable d'entrée.

Exemple :

Créez un projet appelé product.py dans WebIDE et entrez le contenu suivant.

import itertools

## Calculez le produit cartésien de deux listes
list1 = [1, 2]
list2 = ['a', 'b']
product_iterator = itertools.product(list1, list2)

## Affichez les éléments de l'itérateur produit
for item in product_iterator:
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

permutations

La fonction permutations génère toutes les permutations ordonnées possibles d'éléments à partir d'un itérable d'entrée. Elle prend un itérable et un entier optionnel r en arguments, spécifiant la longueur des permutations.

Exemple :

Créez un projet appelé permutations.py dans WebIDE et entrez le contenu suivant.

import itertools

## Générez toutes les permutations de longueur 2 à partir d'une liste
list1 = [1, 2, 3]
permutations_iterator = itertools.permutations(list1, 2)

## Affichez les éléments de l'itérateur de permutations
for item in permutations_iterator:
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

combinations

La fonction combinations génère toutes les combinaisons non ordonnées possibles d'éléments à partir d'un itérable d'entrée. Elle prend un itérable et un entier r en arguments, spécifiant la longueur des combinaisons.

Exemple :

Créez un projet appelé combinations.py dans WebIDE et entrez le contenu suivant.

import itertools

## Générez toutes les combinaisons de longueur 2 à partir d'une liste
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations(list1, 2)

## Affichez les éléments de l'itérateur de combinaisons
for item in combinations_iterator:
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

combinations_with_replacement

La fonction combinations_with_replacement génère toutes les combinaisons non ordonnées possibles d'éléments à partir d'un itérable d'entrée, en autorisant des éléments répétés. Elle prend un itérable et un entier r en arguments, spécifiant la longueur des combinaisons.

Exemple :

Créez un projet appelé cr.py dans WebIDE et entrez le contenu suivant.

import itertools

## Générez toutes les combinaisons avec remplacement de longueur 2 à partir d'une liste
list1 = [1, 2, 3]
combinations_iterator = itertools.combinations_with_replacement(list1, 2)

## Affichez les éléments de l'itérateur de combinaisons avec remplacement
for item in combinations_iterator:
    print(item)

Sortie :

Utilisez la commande suivante pour exécuter le script.

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

Résumé

Dans ce tutoriel, nous avons abordé les bases du module Python Itertools et exploré certaines de ses fonctions clés. Itertools fournit un ensemble d'outils puissants et économes en mémoire pour travailler avec des itérateurs qui peuvent vous aider à résoudre divers problèmes combinatoires facilement. Continuez à pratiquer et à explorer le module pour découvrir davantage de ses capacités et améliorer vos compétences en programmation Python.