NSI (Spé) — Représentation des données
Types construits : tableaux, tuples, dictionnaires
Structures de données composites en Python
Résumé synthétiqueFiche en 4 sectionsQuiz de 10 questionsGratuit, sans pub
Résumé
Les types construits regroupent plusieurs valeurs dans une seule variable. En Python, un tableau (liste) est une collection ordonnée et modifiable, écrite entre crochets : notes = [12, 15, 8, 17]. Un tuple est semblable mais non modifiable (immuable), écrit entre parenthèses : point = (3, 7). Un dictionnaire associe des clés à des valeurs, écrit entre accolades : eleve = {"nom": "Dupont", "age": 16}. On accède aux éléments d'une liste par leur indice (qui commence à 0) et à ceux d'un dictionnaire par leur clé. Les listes se parcourent avec des boucles for et offrent des opérations comme append(), len() et le slicing (notes[1:3]).
La liste est la structure de données la plus utilisée en Python. Elle range des valeurs dans un ordre précis, chacune repérée par son indice. Contrairement au tuple, elle est mutable : on peut ajouter, modifier ou retirer des éléments après sa création.
Une liste se lit par son indice (qui démarre à 0) ; un dictionnaire se lit par sa clé.
- Déclaration : notes = [12, 15, 8, 17] ; une liste peut mélanger des types différents.
- Accès par indice : notes[0] vaut 12 (le premier), notes[-1] vaut 17 (le dernier).
- Modification : notes[2] = 14 remplace le 8 par 14, car les listes sont mutables.
- Ajout / suppression : notes.append(19) ajoute à la fin ; notes.pop() retire le dernier ; del notes[0].
- Longueur et slicing : len(notes) compte les éléments ; notes[1:3] renvoie [15, 8] (le 3 est exclu).
Exemple
notes = [12, 15, 8, 17] ; notes.append(19) donne [12, 15, 8, 17, 19] ; notes[1:3] renvoie [15, 8] ; notes[-1] vaut 19.
Piège à éviter
L'indice commence à 0, pas à 1 : le dernier élément d'une liste de 4 valeurs est à l'indice 3. Écrire notes[4] sur une liste de 4 éléments lève une IndexError.
Un tuple ressemble à une liste, mais il est immuable : une fois créé, on ne peut plus le modifier. On l'utilise pour des données qui ne doivent pas changer (coordonnées, dates) et il peut servir de clé de dictionnaire, ce qu'une liste ne peut pas.
- Déclaration : point = (3, 7), ou même point = 3, 7 (les parenthèses sont optionnelles).
- Immuable : point[0] = 5 lève une TypeError, on ne peut pas réécrire un tuple.
- Accès : par indice comme une liste : point[0] vaut 3, point[1] vaut 7.
- Déballage (unpacking) : x, y = point affecte x = 3 et y = 7 d'un coup.
- Tuple à un élément : t = (5,) avec la virgule obligatoire, sinon (5) est juste un entier.
Exemple
point = (3, 7) ; x, y = point affecte x = 3 et y = 7. On peut s'en servir comme clé : distances = {(0, 0): 0, (3, 4): 5}.
Piège à éviter
Oublier la virgule du tuple singleton est une erreur classique : t = (5) crée l'entier 5, alors que t = (5,) crée bien un tuple d'un élément.
Un dictionnaire range des paires clé → valeur. Au lieu d'accéder par position, on accède par une clé parlante. C'est la structure idéale pour décrire un objet (un élève, un produit) ou pour faire une recherche rapide.
- Déclaration : eleve = {"nom": "Dupont", "age": 16, "moyenne": 14.5}.
- Accès par clé : eleve["nom"] renvoie "Dupont".
- Ajout / modification : eleve["classe"] = "1re" ajoute une entrée ; eleve["age"] = 17 modifie.
- Clés immuables : une clé doit être de type str, int ou tuple ; les valeurs sont de tout type.
- Parcours : for cle, valeur in eleve.items(): itère sur les clés et les valeurs.
Exemple
eleve = {"nom": "Dupont", "age": 16} ; eleve.get("tel", "inconnu") renvoie "inconnu" sans planter, car la clé "tel" est absente.
Piège à éviter
Accéder à une clé inexistante avec eleve["tel"] lève une KeyError. Pour éviter l'erreur, utilise eleve.get("tel", valeur_par_defaut).
Une fois les données rangées, on les parcourt avec des boucles et on en construit de nouvelles avec les listes en compréhension, une syntaxe concise propre à Python. On peut aussi imbriquer les structures (liste de listes) pour représenter des tableaux à deux dimensions.
- Parcours par élément : for note in notes: traite chaque valeur directement.
- Parcours par indice : for i in range(len(notes)): donne accès à l'indice i et à notes[i].
- Liste en compréhension : carres = [x*x for x in range(10)] crée [0, 1, 4, ..., 81].
- Filtrage : pairs = [x for x in liste if x % 2 == 0] ne garde que les nombres pairs.
- Matrice (liste de listes) : m = [[1, 2], [3, 4]] ; m[0][1] vaut 2 (ligne 0, colonne 1).
Exemple
carres = [x*x for x in range(5)] donne [0, 1, 4, 9, 16]. Pour une matrice m = [[1, 2], [3, 4]], m[1][0] vaut 3 (deuxième ligne, premier élément).
Piège à éviter
Dans une matrice, le premier crochet choisit la ligne, le second la colonne : m[1][0] n'est pas m[0][1]. Inverser les deux indices est une erreur fréquente.
Quiz - Types construits
10 questions
S'entraîner
Articles utiles
Questions fréquentes
Les points clés à retenir sur Types construits : tableaux, tuples, dictionnaires, extraits du quiz de révision.
Que renvoie len([1, 2, 3, 4]) ?
Réponse :
4
La liste contient 4 éléments, donc len() renvoie 4.
Quel est l'indice du premier élément d'une liste en Python ?
Réponse :
0
En Python, l'indexation commence à 0 : le premier élément est à l'indice 0, le dernier à l'indice len(liste) - 1.
Quelle instruction provoque une erreur ?
Réponse :
t = (1, 2, 3) ; t[0] = 5
Un tuple est immuable : t[0] = 5 lève une TypeError. Une liste, elle, se modifie sans problème.
Comment accède-t-on à la valeur associée à la clé "nom" dans un dictionnaire d ?
Réponse :
d["nom"]
On accède à une valeur de dictionnaire par sa clé entre crochets : d["nom"]. Un dictionnaire ne s'indexe pas par position.