Itérer sur des itérables (2)
L'une des choses que vous avez apprises dans ce chapitre, c'est que tous les itérables ne sont pas de véritables listes. Deux exemples que nous avons vus sont les chaînes de caractères et l'utilisation de la fonction range(). Dans cet exercice, nous allons nous concentrer sur range().
Vous pouvez utiliser range() dans une boucle for comme s'il s'agissait d'une liste à parcourir :
for i in range(5):
print(i)
Rappelez-vous que range() ne crée pas réellement la liste ; il crée plutôt un objet range avec un itérateur qui produit les valeurs jusqu'à atteindre la limite (dans l'exemple, jusqu'à la valeur 4). Si range() créait la liste réelle, l'appeler avec une valeur de \(10^{100}\) ne fonctionnerait probablement pas, d'autant qu'un nombre aussi grand pourrait dépasser la mémoire d'un ordinateur classique. La valeur \(10^{100}\) est en fait ce qu'on appelle un Googol, c'est-à-dire un 1 suivi de cent zéros. C'est un nombre immense !
Votre tâche dans cet exercice est de montrer qu'appeler range() avec \(10^{100}\) ne précrée pas effectivement la liste.
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Créez un objet itérateur
small_valuesurrange(3)à l'aide de la fonctioniter(). - À l'aide d'une boucle
for, itérez surrange(3)en affichant la valeur à chaque itération. Utiliseznumcomme variable de boucle. - Créez un objet itérateur
googolsurrange(10 ** 100).
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create an iterator for range(3): small_value
small_value = ____
# Print the values in small_value
print(next(small_value))
print(next(small_value))
print(next(small_value))
# Loop over range(3) and print the values
# Create an iterator for range(10 ** 100): googol
googol = ____
# Print the first 5 values from googol
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))
print(next(googol))