ajout partie sur p-uplets nommés, typo

This commit is contained in:
2026-01-05 23:53:42 +01:00
parent f976e305b4
commit b9be582014
4 changed files with 91 additions and 75 deletions

View File

@@ -2,8 +2,8 @@
-------------
> ***Contenu*** : Notions introduites : le type conteneur, avec les listes, les tuples, parcours de séquences.
> ***Compétences*** : Comprendre la différence entre une liste python et un tuple. Maîtriser la création de conteneurs sur Python.
> ***Contenu*** : Notions introduites : le type conteneur, avec les listes, les tuples, les p-uplets nommés, parcours de séquences.
> ***Compétences*** : Comprendre la différence entre une liste python et un tuple. Maîtriser la création de conteneurs sur Python. Savoir utiliser les p-uplets nommés.
## Le programme
@@ -19,7 +19,7 @@
Les types *conteneurs* comme les tuples ou les listes permettent de stocker des objets, et proposent des méthodes d'accès, de modification et d'itération sur ces mêmes objets.
Ici nous allons voir deux types de conteneurs en particulier : les tuples, les listes. En apprenant à créer et à manipuler ces types d'objets, cela nous permettra de travailler sur un grand nombre de données de manière rapide et efficace.
Ici nous allons voir plusieurs types de conteneurs : les listes, les tuples et les p-uplets nommés. En apprenant à créer et à manipuler ces types d'objets, cela nous permettra de travailler sur un grand nombre de données de manière rapide et efficace.
--------
@@ -294,7 +294,81 @@ print(t)
- Le tuple lui-même reste le même (il contient toujours trois éléments et les deux premiers sont toujours 1 et 2), mais la liste à l'intérieur du tuple a été modifiée.
- C'est pourquoi on dit que les tuples peuvent "contenir" des éléments mutables.
- C'est pourquoi on dit que les tuples peuvent "contenir" des éléments mutables.
------------
## Les p-uplets nommés (namedtuple)
Lorsqu'on utilise un tuple classique, on accède aux éléments par leur indice. Cela peut rendre le code difficile à lire, surtout quand le tuple contient plusieurs valeurs.
```python
# Tuple classique représentant un élève
eleve = ("Alice", 16, "1ère NSI")
print(eleve[0]) # Le prénom
print(eleve[1]) # L'âge
```
Les **p-uplets nommés** (ou *named tuples*) permettent d'accéder aux éléments par leur nom, tout en conservant les avantages des tuples (immutabilité, performance).
### Création d'un p-uplet nommé
Pour utiliser les p-uplets nommés, on importe `namedtuple` depuis le module `collections` :
```python
from collections import namedtuple
# On définit un nouveau type "Eleve" avec trois champs
Eleve = namedtuple('Eleve', ['prenom', 'age', 'classe'])
# On crée une instance de ce type
alice = Eleve("Alice", 16, "1ère NSI")
bob = Eleve(prenom="Bob", age=17, classe="Terminale NSI")
```
### Accès aux éléments
On peut maintenant accéder aux éléments par leur nom :
```python
print(alice.prenom) # Alice
print(alice.age) # 16
print(bob.classe) # Terminale NSI
```
L'accès par indice reste possible :
```python
print(alice[0]) # Alice (équivalent à alice.prenom)
```
### Exemple : coordonnées géographiques
```python
from collections import namedtuple
Coordonnees = namedtuple('Coordonnees', ['latitude', 'longitude'])
paris = Coordonnees(48.8566, 2.3522)
lyon = Coordonnees(latitude=45.7640, longitude=4.8357)
print(f"Paris : {paris.latitude}°N, {paris.longitude}°E")
```
### Avantages des p-uplets nommés
- **Lisibilité** : `point.x` est plus clair que `point[0]`
- **Auto-documentation** : le code s'explique de lui-même
- **Immutabilité** : comme les tuples classiques, ils ne peuvent pas être modifiés
- **Compatibilité** : ils fonctionnent partout où un tuple est attendu
### À retenir
| Opération | Résultat |
| --------- | -------- |
| `p.champ` | Renvoie la valeur du champ nommé |
| `p[i]` | Renvoie l'élément d'indice i (comme un tuple classique) |
| `p._fields` | Renvoie un tuple contenant les noms des champs |
------------