ajout partie sur p-uplets nommés, typo
This commit is contained in:
@@ -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 |
|
||||
|
||||
------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user