Itérer sur des tables itératives (2)
L'une des choses que vous avez apprises dans ce chapitre est que tous les itérables ne sont pas de véritables listes. Les chaînes de caractères et l'utilisation de la fonction range()
sont quelques exemples que nous avons étudiés. Dans cet exercice, nous nous concentrerons sur la fonction 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'à ce qu'il atteigne la limite (dans l'exemple, jusqu'à la valeur 4). Si range()
a créé la liste réelle, l'appeler avec une valeur de \(10^{100}\) peut ne pas fonctionner, d'autant plus qu'un nombre aussi grand peut dépasser la mémoire d'un ordinateur normal. La valeur \(10^{100}\) est en fait ce qu'on appelle un Googol, c'est-à-dire un 1 suivi de cent 0. C'est un chiffre énorme !
Votre tâche pour cet exercice est de montrer que l'appel à range()
avec \(10^{100}\) ne va pas réellement précréer la liste.
Cet exercice fait partie du cours
Boîte à outils Python
Instructions
- Créez un objet itérateur
small_value
surrange(3)
à l'aide de la fonctioniter()
. - À l'aide d'une boucle
for
, itérez surrange(3)
, en imprimant la valeur à chaque itération. Utiliseznum
comme variable de la boucle. - Créez un objet itérateur
googol
surrange(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))