Parcours de tableaux⚓︎
Considérons le tableau des dix langues les plus parlées dans le monde (en nombre de locuteurs dont c'est la langue maternelle - source : Wikipédia) :
plus_parlees = [
"mandarin",
"espagnol",
"anglais",
"hindi",
"bengali",
"portugais",
"russe",
"japonais",
"allemand",
"cantonais",
]
Le mandarin est le premier élément du tableau : c'est la langue maternelle la plus importante. La valeur "mandarin"
est à l'indice 0
dans le tableau.
Il est très courant de parcourir des tableaux en utilisant une boucle « Pour », avec for
de Python.
Une première approche consiste à parcourir les indices :
print("Les dix langues maternelles les plus importantes sont :\n")
for indice in range(len(plus_parlees)):
print("-", plus_parlees[indice])
On obtient alors :
Les dix langues maternelles les plus importantes sont :
- mandarin
- espagnol
- anglais
- hindi
- bengali
- portugais
- russe
- japonais
- allemand
- cantonais
Il est toutefois possible de parcourir directement les valeurs contenues dans le tableau. Ainsi, le code ci-dessous affichera les mêmes lignes :
print("Les dix langues maternelles les plus importantes sont :\n")
for langue in plus_parlees:
print("-", langue)
Comme on peut le voir, le code est allégé, plus facile à lire, car on n'utilise pas les indices.
Dans certains cas, il est toutefois nécessaire d'utiliser les indices et les valeurs :
print("Les dix langues maternelles les plus importantes sont :\n")
for indice in range(len(plus_parlees)):
print("-", plus_parlees[indices], "en n°", indice + 1)
On obtient alors :
Les dix langues maternelles les plus importantes sont :
- mandarin en n° 1
- espagnol en n° 2
- anglais en n° 3
- hindi en n° 4
- bengali en n° 5
- portugais en n° 6
- russe en n° 7
- japonais en n° 8
- allemand en n° 9
- cantonais en n° 10
Question
On considère le tableau pointures = [38, 43, 44, 43, 37, 42, 39, 43, 40]
. On exécute le code ci-dessous :
🐍 Script Python | |
---|---|
1 2 |
|
- Ce code affiche tous les indices du tableau
- Ce code affiche toutes les pointures du tableau
- Ce code affiche les trois premières pointures du tableau
- Ce code provoque une erreur
Ce code affiche tous les indices du tableau
Ce code affiche toutes les pointures du tableau... avant d'afficher une erreur !
Ce code affiche les trois premières pointures du tableau
Ce code provoque une erreur
En effet, la boucle parcourt les entiers entre 0
inclus et 44
exclu. On essaie ensuite dans la ligne 2 d'accéder à l'élément d'indice i
du tableau. Cela fonctionne pour les premières valeurs de i
, jusqu'à i = 8
. Ensuite, l'instruction pointures[i]
entraîne une erreur car i
vaut 9
et pointures[9]
n'existe pas.
Remarques
Avec un tableau
de longueur l
, alors
tableau[l]
n'existe pas,tableau[l - 1]
est le dernier élément, (sil > 0
).
Question
On considère toujours le tableau pointures = [38, 43, 44, 43, 37, 42, 39, 43, 40]
. On exécute le code ci-dessous :
🐍 Script Python | |
---|---|
1 2 |
|
- Ce code affiche tous les indices du tableau
- Ce code affiche toutes les pointures du tableau
- Ce code provoque une erreur
- La variable
i
est mal nommée
Ce code affiche tous les indices du tableau
Ce code affiche toutes les pointures du tableau
Ce code provoque une erreur
La variable
i
est mal nommée
Cette fois-ci on parcourt les valeurs du tableau. La première valeur de i
est donc 38
, la dernière 40
. On affiche ensuite chaque valeur de i
: des pointures.
De plus, le nom de variable i
est souvent utilisé pour désigner des indices dans une boucle. Comme nous l'avons vu, la variable i
se voit ici affectée les valeurs du tableau. Mieux vaudrait ne pas utiliser ce nom de variable.
Question
On dispose d'un tableau contenant des nombres entiers dont certains sont peut-être en double. Dans quels cas de figures peut-on utiliser un parcours par valeurs du tableau (sans utiliser les indices) ?
- Rechercher le plus grand nombre
- Déterminer si le nombre 0 est présent dans le tableau ?
- Déterminer la position du minimum
- Calculer la somme de tous les nombres
Rechercher le plus grand nombre
Déterminer si le nombre 0 est présent dans le tableau ?
Déterminer la position du minimum
Calculer la somme de tous les nombres
Seul le troisième cas nécessite de connaître l'indice du minimum. Dans les autres cas, on peut se contenter de parcourir par valeurs.
Question
Compléter le script ci-dessous permettant de compter le nombre de pointures égales à 41 dans le tableau.
L'avant-dernière ligne assert compteur == 2
permet de vérifier que votre code trouve bien 2
.
- Si ce n'est pas le cas Python affichera une erreur.
- Si, à l'inverse, le test est passé avec succès Python affichera
Bravo !
.
Solution
On peut se contenter de parcourir les valeurs :
compteur = 0
for p in pointures:
if p == 41:
compteur += 1
Question : la fonction derniere_occurrence
Compléter la fonction derniere_occurrence
prenant en argument tableau
de type list
ainsi qu'une valeur cible
et qui renvoie l'indice de la dernière occurrence de cible
dans tableau
.
Si cible
n'est pas dans tableau
, la fonction renverra None
.
Solution
Sachant que l'on cherche la position d'un élément, il faut parcourir avec les indices :
def derniere_occurrence(tableau, cible):
resultat = None
for i in range(len(tableau)):
if tableau[i] == cible:
resultat = i
return resultat
Une solution alternative et plus astucieuse consiste à parcourir le tableau en partant de la fin. Ainsi, dès que l'on rencontre la cible
on peut renvoyer l'indice correspondant :
def derniere_occurrence(tableau, cible):
for i in range(len(tableau) - 1, -1, -1):
if tableau[i] == cible:
return i
return None