Tableaux, p-uplets, listes et tuples
Complétez en bleu cet énoncé pour constituer votre compte-rendu.
Pensez à sauvegarder régulièrement le fichier dans votre dossier NSI.
Variables simples
Nous avons jusqu'ici utilisé des variables de type int, float ou str.
Rappelez quel type d’objet peut être stocké dans chaque type de variable :
Tableaux et listes
Un tableau est une séquence d’objets auxquels on peut accéder par leur position (appelée
indice) dans la séquence.
En langage Python, on parle plutôt de liste .
Exemple : nombres = [3.141, 1.618, 2.718] est une liste nommée " nombres " , de longueur
égale à 3 (c’est à dire constituée de trois éléments). Noter l’écriture avec des crochets droits
[ et ].
Difficulté : en Python, l’indice d’un élément est un entier compris entre 0 et (longueur-1).
L’élément 3.141 est le premier de la liste nombres mais son indice est 0, tandis que 2.718 est
l’élément d’indice 2 et que 1.618 est l’élément d’indice 1.
Manipulation basique des listes en Python
Exemple Commentaire
Création d’une liste trucs = [2, 1.5, 99] crée une liste nommée "trucs"
contenant trois éléments
Accès à un élément trucs[1] 1.5 car le premier élément de
de la liste avec son la liste a l’indice 0
indice
Ajout d’un élément [Link](1.414) ou la liste deviendra
trucs = trucs + [1.414] [2, 1.5, 99, 1.414]
Détermination de la len(trucs) 4
longueur de la liste
Suppression d’un [Link](2) la liste deviendra
élément d’indice [2, 1.5, 1.414]
donné
Remplacement d’un trucs[1] = 1024 la liste deviendra
élément d’indice [2, 1024, 1.414]
donné
Exercice en mode débranché
Que lira-t-on à l'écran si on exécute ce programme ?
mots = ['hibou','chou','clou','caillou','genou','pou','voyou','ripou']
[Link]('bijou')
[Link](6)
mots[2] = 'joujou'
print(mots)
Parcours d’une liste
Il est souvent nécessaire de parcourir des listes, c’est à dire de les lire élément par élément. C’est
le cas quand on cherche un objet donné dans une liste par exemple.
Il existe deux méthodes (que vous devez connaître) qui sont basées sur la boucle bornée "for".
Imaginons une liste (non classée) contenant les prénoms des 1420 élèves du lycée :
prenoms = ["Thelma", "Léo", "Zita", "Mounir", "Noémie", ...]
On cherche à savoir combien de fois le prénom "Elsa" est dans la liste. Il faut donc parcourir la
liste du 1er au dernier élément et comparer à chaque fois l’élément à la chaîne de caractères
"Elsa".
Méthode 1 Méthode 2
total = 0 total = 0
for i in range(0,len(prenoms)): for i in prenoms:
if prenoms[i] == "Elsa" : if i == "Elsa" :
total = total + 1 total = total + 1
print(total) print(total)
Quelles sont les valeurs prises par la variable de boucle i ?
Renommez plus explicitement la variable " i " pour une des deux méthodes, en expliquant votre
choix. Methode 2
Des exemples en mode débranché
Pour chacune des questions suivantes, choisir l'unique bonne réponse ().
Programme 1 Question
amis = ["Noé", "Malo", "Sophia"] Quel est le résultat affiché ?
print(amis[1]) □ Noé
□ Malo ;;
□ Sophia
□ une erreur est signalée
Programme 2 Question
e = "RPC" Quel est le résultat affiché ?
m = ["covid19", "pangolin", e, 2020] □ pangolin
print(m[2]) □ e
□ 2020
□ RPC ;;
Programme 3 Question
s = 0 Quel est le résultat affiché ?
r = [10, -3, 5, 2] □4
for i in range(0,5,1): □ 14
s = s + r[i] □ 20
print(s) □ une erreur est signalée ;; index out of range ( r [4]
nexiste pas)
Programme 4 Question
p, i = 0, 0 Après exécution du programme, la variable p
tirage = [12, 27, 33, 38, 45, 49] contient
for x in tirage: □ 2 ;; car 2 nombres pair dans la liste
if x%2==0: □ 3
p = p + 1 □ 4
else: □ 6
i = i + 1
Programme 5 Question
liste = ['a','e','e','r','s','t'] Quel est le résultat affiché ?
ordre = [0,3,1,5,2,4] □ aretes ;;
s = "" □ attere
for i in ordre: □ arrets
s = s + liste[i] □ aerees
print(s)
Programme 6 Question
notes = [9, 15, 18, 7, 12, 12] Ce programme doit calculer la moyenne des notes de
s = 0 la liste. Par quelle instruction doit-on remplacer
for note in notes: "???" ?
??? □ s = s + i
print(s/len(notes)) □ s = s + note ;;
□ s = s + notes[i]
□ s = s + notes[note]
Construction d'une liste par compréhension
Imaginons que nous souhaitions construire une liste des 100 premiers entiers (de 1 à 100).
Nous pourrions procéder naïvement :
liste = [1, 2, 3, 4, 5, ..., 100]
mais entrer 100 nombres au clavier est long et sans intérêt. Sans parler des risques d'erreurs de
frappe ...
On peut alors penser à utiliser une boucle inconditionnelle avec l'instruction for :
liste = []
for i in range(1,101,1):
[Link](i)
C'est beaucoup mieux !
Il existe une troisième méthode dite "construction par compréhension" qui s'inspire de la méthode
précédente, avec une écriture plus compacte :
liste = [i for i in range(1,101,1)]
Élégant n'est ce pas ?
Des exemples en mode débranché
Programme 7
nb = [i*i for i in range(0,4,1)]
Si on exécute cette ligne la liste nb contiendra ...
0149
Programme 8
nb = [2*k-1 for k in (0, 1, 3, 7, 13)]
Si on exécute cette ligne la liste nb contiendra ...
-1 1 5 13 25
Programme 9
nb = [k for k in range(0, 10) if k%2==0]
Si on exécute cette ligne la liste nb contiendra ...
02468
Tri d'une liste
À condition que les éléments d'une liste soient comparables, une liste peut être triée :
Tri de la liste par la méthode Création d'une nouvelle liste triée par la fonction sorted()
.sort()
[Link]() liste_triée = sorted(liste)
À vous de jouer !
Copiez-collez la liste ci-dessous dans la console python et faites-la trier par Python :
distances = [100, 55, 284, 122, 400, 210, 33]
Copiez-collez la liste ci-dessous dans la console python et obtenez une liste nommée "ordre" dans
laquelle les personnages sont triés par ordre alphabétique :
désordre = ['Joe', 'William', Jack', 'Averell', 'Lucky Luke', 'Jolly Jumper']
p-uplets et tuples
En mathématiques, un p-uplet est une collection indicée de p éléments (p étant un nombre
entier).
Voici un exemple de 2-uplet (ou "doublet") : (0, 1)
Voici un exemple de 3-uplet (ou "triplet") : ("bleu", "blanc", "rouge")
Voici un exemple de 4-uplet (ou "quadruplet") : (♥, ♣, ♦, ♠)
Je vous laisse deviner les noms du 5-uplet, du 6-uplet, ...
Noter que
• l’ordre des éléments est important : (bleu, blanc, rouge) ≠ (bleu, rouge, blanc) par
exemple ;
• des éléments peuvent être identiques : (3, 0, 3) est un triplet qui contient un doublon.
En langage Python, on parle plutôt de tuple .
Voici un exemple de tuple de 3 éléments : (3.141, 2.718, 1.618)
Noter que les éléments sont placés entre des parenthèses "(" et ")" pour ne pas confondre avec
une liste.
Les tuples sont des listes non modifiables (ou "non mutables"), ce qui les rend moins pratiques
à utiliser que les listes. En contrepartie, utiliser des tuples au lieu de listes dans un programme
permet d’avoir un code qui s’exécute plus rapidement et qui occupe moins d’espace mémoire.
Des exemples en mode débranché
Pour chacune des questions suivantes, choisir l'unique bonne réponse ().
Programme 10 Question
p = ('a','e','j','o','u','y') Quel est la valeur de la variable p après exécution du
p[2] = 'i' programme ?
□ ('a','i','j','o','u','y')
□ ('a','e','i','o','u','y')
□ ('a','e','j','o','u','y')
□ une erreur est signalée ;; un tuple est non mutable
Programme 11 Question
notes = (10, 15, 7, 12, 0) Quel est la valeur de la variable bilan après
bilan = [] exécution du programme ?
for i in range(5): □ ['☺', '☺', '!','☺','!'] ;;
if notes[i] < 10: □ ['!', '☺', '!','☺','!']
[Link]('!') □ ['☺']
else: □ une erreur est signalée
[Link]('☺')
Programme 12 Question
c = ("E2", "C5", "A10", "M1") Quel est le résultat affiché ?
print(len(c)) □ 4 ;;
□8
□9
□ une erreur est signalée
Programme 13 Question
t = ('ab', 'ba') Quel est la valeur de la variable u après exécution du
u = t + ('c',) programme ?
□ ('ab','ba','c') ;; on peut ajouter après
mais pas modifier (concaténation)
□ ('abc','bac')
□ ('t', 'c')
□ une erreur est signalée
Programme 14 Question
t = (1, 4, 3, 0, 2) Quel est le résultat affiché ?
print(t[t[2]]) □ 0 ;; (t[t[2]]) = t[3]
□2
□3
□ une erreur est signalée
Exercices bilan
Compléter les fichiers Python "[Link]" à "[Link]"