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 |
|
||||
|
||||
------------
|
||||
|
||||
|
||||
@@ -65,17 +65,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Exercice 1 : Création de listes\n",
|
||||
"\n",
|
||||
"1. Créer une liste contenant l'ensemble des noms des personnes dans la salle de TP\n",
|
||||
"2. Créer une liste contenant l'ensemble des entiers pairs entre 0 et 20 inclus,\n",
|
||||
"3. Afficher uniquement les entiers de la liste, construit à la question 2, qui sont multiples de 4.\n",
|
||||
"4. Créer une fonction `aleatoire` qui renvoieune liste de valeurs aléatoires. Elle prend 3 entiers en paramètre :\n",
|
||||
" - $n$ : le nombre d'éléments de la liste\n",
|
||||
" - $min$ : la valeur minimale possible\n",
|
||||
" - $max$ : la valeur maximale possible"
|
||||
]
|
||||
"source": "### Exercice 1 : Création de listes\n\n1. Créer une liste contenant l'ensemble des noms des personnes dans la salle de TP\n2. Créer une liste contenant l'ensemble des entiers pairs entre 0 et 20 inclus,\n3. Afficher uniquement les entiers de la liste, construit à la question 2, qui sont multiples de 4.\n4. Créer une fonction `aleatoire` qui renvoie une liste de valeurs aléatoires. Elle prend 3 entiers en paramètre :\n - $n$ : le nombre d'éléments de la liste\n - $min$ : la valeur minimale possible\n - $max$ : la valeur maximale possible"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -413,19 +403,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"1. Écrire une méthode `miroir_vertical` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir vertical sur les valeurs de la matrice.\n",
|
||||
"\n",
|
||||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||||
" <caption style=\"caption-side:bottom;\">Fig.3.1 - Effet miroir vertical de la Fig.4</caption>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"</table>"
|
||||
]
|
||||
"source": "1. Écrire une fonction `miroir_vertical` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir vertical sur les valeurs de la matrice.\n\n<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n <caption style=\"caption-side:bottom;\">Fig.3.1 - Effet miroir vertical de la Fig.3</caption>\n<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n</table>"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -439,19 +417,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"2. Écrire une méthode `miroir_horizontal` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir horizontal sur les valeurs de la matrice.\n",
|
||||
"\n",
|
||||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||||
" <caption style=\"caption-side:bottom;\">Fig.3.2 - Effet miroir horizontal de la Fig.4</caption>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"</table>"
|
||||
]
|
||||
"source": "2. Écrire une fonction `miroir_horizontal` qui prend en paramètre une matrice et a pour effet de bord de réaliser l'effet miroir horizontal sur les valeurs de la matrice.\n\n<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n <caption style=\"caption-side:bottom;\">Fig.3.2 - Effet miroir horizontal de la Fig.3</caption>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n</table>"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -465,19 +431,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"3. Écrire une fonction `rotation_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens horaire des valeurs de la matrice.\n",
|
||||
"\n",
|
||||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||||
" <caption style=\"caption-side:bottom;\">Fig.3.3 - Roration horaire de la Fig.4</caption>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n",
|
||||
"</table>"
|
||||
]
|
||||
"source": "3. Écrire une fonction `rotation_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens horaire des valeurs de la matrice.\n\n<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n <caption style=\"caption-side:bottom;\">Fig.3.3 - Rotation horaire de la Fig.3</caption>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td></tr>\n<tr><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚪</td></tr>\n</table>"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -491,19 +445,7 @@
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"4. Écrire une fonction `rotation_anti_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens anti-horaire des valeurs de la matrice.\n",
|
||||
"\n",
|
||||
"<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n",
|
||||
" <caption style=\"caption-side:bottom;\">Fig.3.4 - Roration anti-horaire de la Fig.4</caption>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n",
|
||||
"<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n",
|
||||
"</table>"
|
||||
]
|
||||
"source": "4. Écrire une fonction `rotation_anti_horaire` qui prend en paramètre une matrice et renvoie une matrice dont les valeurs correspondent à la rotation dans le sens anti-horaire des valeurs de la matrice.\n\n<table style=\"margin : 0 auto 0 auto; width : 100px;text-align:center;\">\n <caption style=\"caption-side:bottom;\">Fig.3.4 - Rotation anti-horaire de la Fig.3</caption>\n<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚫</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚫</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚪</td><td>⚫</td></tr>\n<tr><td>⚪</td><td>⚪</td><td>⚪</td><td>⚫</td><td>⚫</td><td>⚫</td></tr>\n</table>"
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
@@ -569,4 +511,4 @@
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user