Types construits
Organiser des données avec les p-uplets, tableaux, matrices et dictionnaires Python ; lire des indices, parcourir et choisir une structure.
Environ 35 minutes
- Choisir entre p-uplet, tableau et dictionnaire
- Lire et modifier une case par son indice
- Construire un tableau par compréhension
- Parcourir une matrice et un dictionnaire
Comment représenter toute une série de mesures dans un programme ?
Une variable entière décrit une mesure. Pour travailler sur une semaine entière, une grille ou une fiche contenant plusieurs renseignements, il faut regrouper des valeurs sans perdre leur organisation. Le choix de la structure détermine la façon de retrouver une information. Nous utiliserons Python et distinguerons la position dans une séquence du nom d’un champ. Les tableaux étudiés contiennent des éléments de même type ; un enregistrement peut réunir des champs de types différents.
1. Regrouper un nombre fixé de valeurs
Un p-uplet est une suite ordonnée de p valeurs. Le couple est le cas p = 2. En Python, (3, 7) représente un couple ; ("Lyon", 12) réunit une chaîne et un entier. La position donne le sens de chaque composante : on doit donc annoncer une convention, par exemple ville puis température. Deux couples ayant les mêmes valeurs dans un ordre différent ne représentent pas nécessairement la même information.
Un tuple est non modifiable : on ne remplace pas directement une de ses composantes. Cette propriété convient à un résultat regroupant plusieurs valeurs. Une fonction peut renvoyer un seul objet qui est un couple. La ligne return minimum, maximum, dans une fonction, renvoie ainsi deux résultats regroupés. Lors de l’appel, bas, haut = resultat affecte chaque composante à un nom. Le nombre de noms doit correspondre au nombre de composantes.
Exemple résolu
Une fonction reçoit un tableau non vide de mesures et doit renvoyer la plus petite et la plus grande. Écris une version courte, puis interprète son résultat pour [8, 3, 11, 6].
- Étape 1 : Définir les deux composantes dans un ordre annoncé : minimum puis maximum.def bornes(t): return min(t), max(t)
- Étape 2 : Appliquer la fonction au tableau de quatre entiers.bornes([8, 3, 11, 6])
- Étape 3 : Le minimum est 3 et le maximum 11. Affecter ce résultat à bas, haut donne bas = 3 et haut = 11. La précondition non vide est nécessaire : min ne peut pas choisir de minimum dans un tableau vide.
Résultat : Le résultat est le couple (3, 11). Il décrit deux bornes, et non la moyenne des quatre mesures.
Piège à éviter : Inverser les deux composantes sans changer la convention donnerait des noms trompeurs aux résultats.
2. Accéder à un tableau par indice
Un tableau ordonne plusieurs éléments de même type, accessibles par leur position. En Python, on le représente ici par une liste, comme t = [12, 15, 9, 18]. Le premier indice est 0. Pour n éléments, les indices positifs autorisés vont de 0 à n − 1. len(t) vaut n ; cette longueur n’est pas un indice valide. Lire t[2] donne ici 9. Affecter t[2] = 10 remplace cette valeur sans déplacer les autres.
On peut parcourir les valeurs avec for valeur in t:, ou parcourir les indices avec for i in range(len(t)):. Dans le second cas, la valeur s’obtient avec t[i]. On choisit un parcours par indices si l’on doit remplacer une case ou connaître sa position. Pour seulement lire chaque mesure, le parcours direct rend l’intention plus claire. Une boucle ne doit pas accéder à une case située après la fin du tableau.
L’affectation u = t ne fabrique pas un deuxième tableau indépendant : les deux noms désignent alors le même objet. Modifier une case par u est visible par t. Une compréhension, par exemple u = [x for x in t], construit un nouveau tableau de valeurs. Pour un tableau d’entiers, remplacer une case de u ne remplace plus celle de t. Cette distinction aide à expliquer une modification inattendue, sans supposer que Python change les valeurs au hasard.
À toi d'essayer
On pose t = [6, 2, 9, 4, 7], puis t[1] = t[4]. Quelles sont la valeur de t[1] et la longueur du tableau ?
Voir la réponseMasquer la réponse
t[4] vaut 7 ; cette valeur remplace 2. Le tableau devient [6, 7, 9, 4, 7]. Sa longueur reste 5 : une affectation de case ne supprime ni n’ajoute de position.
3. Compréhensions et matrices
Une compréhension construit un tableau à partir d’un parcours. L’expression [2 * x for x in range(5)] calcule le double de chaque entier de 0 à 4 et rassemble les résultats dans cet ordre. On obtient [0, 2, 4, 6, 8]. La partie située avant for est la valeur à produire, pas le nom du tableau. Une condition peut filtrer les valeurs : [x for x in range(8) if x % 2 == 0] conserve les entiers pairs inférieurs à 8.
Une matrice se représente par un tableau de lignes. Dans m = [[4, 7, 1], [9, 2, 6]], il y a deux lignes et trois colonnes. L’accès m[i][j] choisit d’abord la ligne i, puis la colonne j dans cette ligne. Les indices commencent à 0 dans les deux directions. Les lignes d’une matrice rectangulaire ont la même longueur. Pour parcourir toutes ses cases, on parcourt chaque ligne, puis chacune des valeurs de cette ligne.
Exemple résolu
Construis les carrés des entiers de 1 à 4, puis modifie la case de ligne 0 et de colonne 1 de la matrice précédente pour y placer le dernier carré.
- Étape 1 : Construire quatre carrés dans un nouveau tableau.carres = [x * x for x in range(1, 5)]
- Étape 2 : Le résultat est [1, 4, 9, 16] : la borne finale 5 de range est exclue.
- Étape 3 : Le dernier carré a l’indice 3. Placer sa valeur dans la première ligne et la deuxième colonne.m[0][1] = carres[3]
Résultat : La matrice devient [[4, 16, 1], [9, 2, 6]]. Une seule case a changé.
Piège à éviter : Confondre ligne et colonne conduirait à modifier m[1][0], qui contient 9 et non 7.
À toi d'essayer
Construis, par compréhension, les entiers de 1 à 10 divisibles par 3. Explique le rôle de la borne finale de range.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
4. Nommer les champs avec un dictionnaire
Un dictionnaire associe des clés à des valeurs. Pour une fiche, fiche = {"ville": "Lyon", "temperature": 12} permet de lire fiche["ville"]. La clé exprime le sens du champ, alors qu’un indice exprime une position. Une clé n’apparaît qu’une fois dans un dictionnaire ; lui affecter une autre valeur remplace la précédente. Une nouvelle clé crée une entrée. Lire une clé absente par crochets provoque une erreur ; tester sa présence avec in évite cette lecture.
Le parcours for cle in fiche: fournit les clés. La méthode fiche.keys() donne accès aux clés, fiche.values() aux valeurs et fiche.items() aux couples clé-valeur. Un parcours for cle, valeur in fiche.items(): permet d’associer chaque nom à sa donnée. On ne déduit pas la signification d’un champ de sa place dans l’affichage : on utilise sa clé. Les noms de clés sont sensibles aux différences de caractères et de majuscules.
Exemple résolu
Une mesure est représentée par {"station" : "A", "valeur" : 17}. Ajoute une unité et remplace la valeur par 19. Quel parcours permet ensuite d’afficher chaque champ avec son contenu ?
- Étape 1 : Nommer la nouvelle information.mesure["unite"] = "degre"
- Étape 2 : Remplacer la valeur associée à la clé déjà présente.mesure["valeur"] = 19
- Étape 3 : Parcourir ensemble les clés et les valeurs.for cle, valeur in mesure.items(): print(cle, valeur)
Résultat : Le dictionnaire contient station associée à "A", valeur associée à 19 et unite associée à "degre". Il possède trois entrées.
Piège à éviter : Écrire mesure[0] chercherait la clé entière 0 ; cela ne signifie pas « premier champ ».
À toi d'essayer
Une grille comporte 3 lignes de 4 entiers. Une fiche décrit cette grille par un nom et sa date de relevé. Propose des structures pour les deux objets et explique pourquoi un seul tableau d’entiers ne convient pas à la fiche.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
5. Choisir et justifier
Au bac : analyser une structure de données
- Identifier ce que représente chaque valeur et annoncer l’ordre des composantes ou les noms des champs.
- Vérifier les bornes avant tout accès ; pour une matrice, contrôler séparément ligne et colonne.
- Simuler chaque affectation dans l’ordre, en distinguant un nom et l’objet qu’il désigne.
- Justifier le choix par l’usage : position calculable, groupe fixe de résultats ou accès par champ nommé. Si tu poursuis la spécialité en terminale, ces raisonnements serviront aussi à mobiliser tes acquis de première.
Erreurs fréquentes : prendre la longueur pour le dernier indice ; confondre une clé et une position ; croire qu’une affectation de nom copie un tableau ; permuter ligne et colonne ; appeler min sur un tableau vide. À chaque fois, écris la structure et le sens de l’accès avant de calculer.
Vocabulaire
- Indice :
- Entier désignant la position d’une case dans un tableau.
- Clé :
- Valeur utilisée pour retrouver une entrée dans un dictionnaire.
- Compréhension :
- Expression qui construit un tableau à partir d’un parcours et éventuellement d’un filtre.
- Matrice :
- Organisation rectangulaire de valeurs en lignes et colonnes.
- P-uplet :
- Suite ordonnée d’un nombre fixé de composantes.
Bilan
| Question | Repère |
|---|---|
| Plusieurs résultats liés | Un tuple conserve un ordre annoncé. |
| Série homogène | Un tableau permet l’accès par indice. |
| Données nommées | Un dictionnaire associe des clés à des valeurs. |
Pour t’entraîner après cette leçon, ouvre la rubrique S’entraîner du site, accessible à l’adresse /exercices. Reprends d’abord un accès par indice, puis un parcours et enfin un choix de structure dans une situation nouvelle.
À retenir
- Un tableau de longueur n a pour indices positifs 0 à n − 1.
- Un tuple est ordonné et non modifiable.
- Une compréhension construit un nouveau tableau.
- m[i][j] désigne la colonne j dans la ligne i.
- Un dictionnaire associe chaque clé à une valeur.
Fiche de révision
Pour une série de cinq mesures, la dernière case porte le numéro 4 ; len renvoie 5.
Pour plusieurs résultats d’une fonction, fixer la convention de retour avant de dépaqueter le tuple.
Pour une grille, sélectionner une ligne puis une case de cette ligne.
Pour une fiche, nommer les champs ; items permet de parcourir leurs associations.
Questions fréquentes
Un dictionnaire est-il forcément une matrice ?
Non. Un dictionnaire associe des clés à des valeurs, tandis qu’une matrice organise des cases par deux indices. Une structure peut en contenir une autre, mais leurs règles d’accès restent distinctes.
Et maintenant ?
Tu as lu le cours. L’étape suivante tient en une action.
Relis le coursLes exercices de ce chapitre arrivent bientôt.Prolonge l’expérience !
Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !
Ici, tu débloques aussi 2 corrections détaillées.
Parent ? Suivez les progrès de votre enfant.
