Contenu du cours
Concepts Avancés de Python
Concepts Avancés de Python
Itérables Python
Qu'est-ce qu'un Itérable ?
En Python, les itérables sont des objets qui peuvent être parcourus ou itérés, retournant leurs éléments un par un. Cette capacité à produire un élément à la fois les rend inestimables dans des tâches telles que la boucle, la compréhension et le déballage.
Quelques itérables courants incluent :
- Structures de données : listes, tuples, dictionnaires, ensembles ;
- Chaînes de caractères : produisent leurs caractères un par un ;
- Objets personnalisés : rendus itérables en implémentant la méthode
__iter__
.
Une caractéristique clé des itérables est qu'ils ne "se souviennent" pas intrinsèquement de leur position lors du parcours. Pour réellement parcourir leurs éléments, ils nécessitent un itérateur.
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
La boucle for
parcourt automatiquement les éléments de l'itérable et les traite un par un.
Lorsque Python traite un itérable, il convertit l'objet en un itérateur en utilisant la fonction iter()
. En interne, iter()
appelle la méthode __iter__()
de l'objet. De même, la fonction next()
récupère la valeur suivante de l'itérateur en appelant sa méthode __next__()
.
Voici un exemple qui démontre comment cela fonctionne :
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
Itérables vs. Itérateurs
Bien que tous les itérateurs soient des itérables, tous les itérables ne sont pas des itérateurs. Un itérateur se souvient de sa position lors du parcours et permet d'accéder aux éléments séquentiellement jusqu'à ce que la fin soit atteinte.
Limitation des Itérables
Lorsqu'on travaille avec de grands ensembles de données, stocker tous les éléments dans un itérable comme une liste peut être inefficace. Par exemple, si la séquence de nombres est générée dynamiquement ou est trop grande pour tenir en mémoire, nous avons besoin d'un moyen de traiter les éléments à la demande. C'est là que les itérateurs (abordés dans le prochain chapitre) et l'évaluation paresseuse (introduite plus tard) deviennent cruciaux.
Swipe to start coding
Écrivez un script Python pour simuler le lancer d'un dé à six faces mélangé en utilisant des itérateurs. Complétez les parties manquantes du code pour créer un itérateur, récupérer les éléments en utilisant next()
, et gérer la fin de l'itération de manière élégante.
- Une liste
[1, 2, 3, 4, 5, 6]
représente les faces d'un dé. La liste a déjà été mélangée en utilisantrandom.shuffle()
. - Convertissez la liste mélangée en un itérateur pour pouvoir parcourir ses éléments un par un.
- Utilisez la fonction
next()
pour simuler le lancer du dé et imprimez chaque face jusqu'à ce que toutes les faces soient utilisées. - Lorsque l'itérateur est épuisé, gérez l'exception
StopIteration
pour indiquer que les lancers sont terminés.
Solution
Merci pour vos commentaires !
Itérables Python
Qu'est-ce qu'un Itérable ?
En Python, les itérables sont des objets qui peuvent être parcourus ou itérés, retournant leurs éléments un par un. Cette capacité à produire un élément à la fois les rend inestimables dans des tâches telles que la boucle, la compréhension et le déballage.
Quelques itérables courants incluent :
- Structures de données : listes, tuples, dictionnaires, ensembles ;
- Chaînes de caractères : produisent leurs caractères un par un ;
- Objets personnalisés : rendus itérables en implémentant la méthode
__iter__
.
Une caractéristique clé des itérables est qu'ils ne "se souviennent" pas intrinsèquement de leur position lors du parcours. Pour réellement parcourir leurs éléments, ils nécessitent un itérateur.
numbers = [1, 2, 3, 4] for num in numbers: print(num) title = "codefinity" for char in title: print(char)
La boucle for
parcourt automatiquement les éléments de l'itérable et les traite un par un.
Lorsque Python traite un itérable, il convertit l'objet en un itérateur en utilisant la fonction iter()
. En interne, iter()
appelle la méthode __iter__()
de l'objet. De même, la fonction next()
récupère la valeur suivante de l'itérateur en appelant sa méthode __next__()
.
Voici un exemple qui démontre comment cela fonctionne :
numbers = [1, 2, 3, 4] # Converting the list to an iterator numbers_iterator = iter(numbers) # Accessing elements one at a time using `next()` print(next(numbers_iterator)) # Output: 1 print(next(numbers_iterator)) # Output: 2 print(next(numbers_iterator)) # Output: 3 print(next(numbers_iterator)) # Output: 4 print(next(numbers_iterator)) # Output: StopIteration
Itérables vs. Itérateurs
Bien que tous les itérateurs soient des itérables, tous les itérables ne sont pas des itérateurs. Un itérateur se souvient de sa position lors du parcours et permet d'accéder aux éléments séquentiellement jusqu'à ce que la fin soit atteinte.
Limitation des Itérables
Lorsqu'on travaille avec de grands ensembles de données, stocker tous les éléments dans un itérable comme une liste peut être inefficace. Par exemple, si la séquence de nombres est générée dynamiquement ou est trop grande pour tenir en mémoire, nous avons besoin d'un moyen de traiter les éléments à la demande. C'est là que les itérateurs (abordés dans le prochain chapitre) et l'évaluation paresseuse (introduite plus tard) deviennent cruciaux.
Swipe to start coding
Écrivez un script Python pour simuler le lancer d'un dé à six faces mélangé en utilisant des itérateurs. Complétez les parties manquantes du code pour créer un itérateur, récupérer les éléments en utilisant next()
, et gérer la fin de l'itération de manière élégante.
- Une liste
[1, 2, 3, 4, 5, 6]
représente les faces d'un dé. La liste a déjà été mélangée en utilisantrandom.shuffle()
. - Convertissez la liste mélangée en un itérateur pour pouvoir parcourir ses éléments un par un.
- Utilisez la fonction
next()
pour simuler le lancer du dé et imprimez chaque face jusqu'à ce que toutes les faces soient utilisées. - Lorsque l'itérateur est épuisé, gérez l'exception
StopIteration
pour indiquer que les lancers sont terminés.
Solution
Merci pour vos commentaires !