suppression des cours version notebook

This commit is contained in:
2023-07-06 21:08:13 +02:00
parent 697571886c
commit 21177b2c69
2 changed files with 0 additions and 874 deletions

View File

@@ -1,478 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "bb1cfae9",
"metadata": {},
"source": [
"## Représentation des données : Les Dictionnaires "
]
},
{
"cell_type": "markdown",
"id": "c09a37ee",
"metadata": {},
"source": [
"-------------"
]
},
{
"cell_type": "markdown",
"id": "38d1e9f4",
"metadata": {},
"source": [
"> ***Contenue*** : Notions introduites : le type dictionnaire\n",
"\n",
"> ***Compétences*** : Construire une entrée de dictionnaire, savoir itérer sur es élèments d'un dictionnaire, connaître les méthodes."
]
},
{
"cell_type": "markdown",
"id": "0beaa407",
"metadata": {},
"source": [
"## Le programme"
]
},
{
"cell_type": "markdown",
"id": "dcbf1fd3",
"metadata": {},
"source": [
"-----"
]
},
{
"cell_type": "markdown",
"id": "57421c29",
"metadata": {},
"source": [
"![bo_tuple](../assets/bo_dico.png)"
]
},
{
"cell_type": "markdown",
"id": "401edcc8",
"metadata": {},
"source": [
"## Apport de connaissances"
]
},
{
"cell_type": "markdown",
"id": "717cce94",
"metadata": {},
"source": [
"--------"
]
},
{
"cell_type": "markdown",
"id": "0fc298dc",
"metadata": {},
"source": [
"Les dictionnaires Python permettent d'associer des valeurs à des clés : À partir d'une clé, on peut alors accéder directement à la valeur qui lui est associée."
]
},
{
"cell_type": "markdown",
"id": "607fa703",
"metadata": {},
"source": [
"### Propriétés"
]
},
{
"cell_type": "markdown",
"id": "9e023220",
"metadata": {},
"source": [
"Les dictionnaires sont des conteneurs, comme les listes et tuples, vus précédemment, et sont mutables : *on peut donc modifier, ajouter ou supprimer du contenu.*\n",
"\n",
"Par contre, contrairement aux types de conteneurs précédémment étudiés, on ne peut pas accéder au contenu d'un dictionnaire à l'aide d'un indice : un dictionnaire n'est pas une séquence.\n",
"\n",
"Si on peut bien modifier les valeurs dans un dictionnaire, chaque clé est *unique et non mutable*. Elle peut être une chaîne de caractères, un nombre, un tulle de nombre...\n",
"\n",
"Enfin, les valeurs, quant à elles, peuvent être quelconques."
]
},
{
"cell_type": "markdown",
"id": "555ca300",
"metadata": {},
"source": [
"------"
]
},
{
"cell_type": "markdown",
"id": "21761a39",
"metadata": {},
"source": [
"### Création et accès"
]
},
{
"cell_type": "markdown",
"id": "e219df29",
"metadata": {},
"source": [
"Pour initialiser un dictionnaire vide : "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "09f0144b",
"metadata": {},
"outputs": [],
"source": [
"dico = {}\n",
"#ou\n",
"dico = dict()"
]
},
{
"cell_type": "markdown",
"id": "766eeca7",
"metadata": {},
"source": [
"Pour initialiser un dictionnaire avec des valeurs :"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8523655d",
"metadata": {},
"outputs": [],
"source": [
"perso = {\"prenom\" : \"Bilbo\", \"age\" : 111}"
]
},
{
"cell_type": "markdown",
"id": "7f350ef3",
"metadata": {},
"source": [
"On a donc la clé en premier, ici, prenom & age sont deux chaines de caractères faisant office de clés.\n",
"\n",
"Accéder à une valeur d'un dictionnaire : on donne la clé à laquelle est associée la valeur recherchée (il faut donc que la clé existe)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c1124575",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Bilbo'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"perso [\"prenom\"]\n",
"'Bilbo'"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "094043d5",
"metadata": {},
"outputs": [
{
"ename": "KeyError",
"evalue": "'taille'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/var/folders/nb/7k573f_13zj2tnc5xd0020l40000gn/T/ipykernel_27744/399847934.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mperso\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"taille\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 'taille'"
]
}
],
"source": [
"perso[\"taille\"]"
]
},
{
"cell_type": "markdown",
"id": "a29f8a7f",
"metadata": {},
"source": [
"Tout comme les listes, on peut utiliser la fonction ***len*** pour connaître le nombre de couples stockés."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "1e8c5e32",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(perso)"
]
},
{
"cell_type": "markdown",
"id": "865d51b5",
"metadata": {},
"source": [
"-----"
]
},
{
"cell_type": "markdown",
"id": "a1984b3d",
"metadata": {},
"source": [
"### Modification et parcours"
]
},
{
"cell_type": "markdown",
"id": "dfd2f41e",
"metadata": {},
"source": [
" On ajoute très simplement un couple clé / valeur :"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "24211303",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'prenom': 'Bilbo', 'age': 111, 'taille': 112}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"perso [\"taille\"] = 112\n",
"perso"
]
},
{
"cell_type": "markdown",
"id": "24fbdfae",
"metadata": {},
"source": [
" Pour modifier une valeur, c'est la même méthode : on ajoute un couple deja existant, et cela va écraser la valeur précédente :"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "83ad4a74",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'prenom': 'Bilbo', 'age': 131, 'taille': 112}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"perso[\"age\"] = 131\n",
"perso"
]
},
{
"cell_type": "markdown",
"id": "4fa255d5",
"metadata": {},
"source": [
"Pour supprimer une clé et sa valeur associée, on peut utiliser la fonction ***del***:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "fc43064d",
"metadata": {},
"outputs": [],
"source": [
"del perso[\"age\"]"
]
},
{
"cell_type": "markdown",
"id": "c9021bee",
"metadata": {},
"source": [
"------"
]
},
{
"cell_type": "markdown",
"id": "225cf727",
"metadata": {},
"source": [
"Comme les listes et les tuples, les dictionnaires sont intérables : on itère sur les clés, les valeurs, ou les couples clé / valeur\n",
"\n",
"- Itération sur les clés :"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "2be77c4a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"prenom\n",
"taille\n"
]
}
],
"source": [
"for cle in perso.keys():\n",
" print (cle)"
]
},
{
"cell_type": "markdown",
"id": "6a0ddd68",
"metadata": {},
"source": [
"- Itération sur les valeurs :"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "534dbdba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bilbo\n",
"112\n"
]
}
],
"source": [
"for val in perso.values():\n",
" print(val)"
]
},
{
"cell_type": "markdown",
"id": "d77a9b92",
"metadata": {},
"source": [
"- Itération sur les couples clé / valeur:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "21a715ba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"prenom -> Bilbo\n",
"taille -> 112\n"
]
}
],
"source": [
"for (cle, val) in perso.items():\n",
" print(cle, \"->\", val)"
]
},
{
"cell_type": "markdown",
"id": "222e7ae8",
"metadata": {},
"source": [
"✏ Par défaut, on itère sur les clés."
]
},
{
"cell_type": "markdown",
"id": "c310b73d",
"metadata": {},
"source": [
"### À retenir"
]
},
{
"cell_type": "markdown",
"id": "65893b5c",
"metadata": {},
"source": [
"| Opération | Résultat |\n",
"| ---------------------- | ------------------------------------------------------------ |\n",
"| dico[k] | renvoie la valeur associée à la clé k |\n",
"| x in dico.values() | renvoie True si une valeur de dico est égale à x, False sinon |\n",
"| x not in dico.values() | renvoie True si aucune valeur de dico n'est égale à x, False sinon |\n",
"| x in dico.keys() | renvoie True si une clé de dico est égale à x, False sinon |\n",
"| dico[k] = v | Modifie la valeur v associée à la clé k ou l'ajoute si elle n'existe pas |\n",
"| dico.get(k, v) | Renvoie la valeur associé à la clé k. Si la clé k n'existe pas, renvoie la valeur v |\n",
"| del dico(k) | Enlève du dictionnaire la clé k |"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@@ -1,396 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "b8f17c0e",
"metadata": {},
"source": [
"# # Structures imbriquées et compréhensions"
]
},
{
"cell_type": "markdown",
"id": "5c98615f",
"metadata": {},
"source": [
"> Il est possible de combiner listes, tuples, et dictionnaires. Avec la syntaxe des compréhensions, l'écriture des listes et dictionnaires semble plus élègante."
]
},
{
"cell_type": "markdown",
"id": "6a42e2e0",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "markdown",
"id": "2cda11f3",
"metadata": {},
"source": [
"## Les structures imbriquées"
]
},
{
"cell_type": "markdown",
"id": "ca8a7b82",
"metadata": {},
"source": [
"On peut imbriquer des listes, des tuples et des dictionnaires. Par contre, les clés de dictionnaire ne peuvent pas muter.\n",
"\n",
"De ce fait, nous pouvons construire des listes de listes, des listes de tuples, des listes de dictionnaires, des tuples de listes, des dictionnaires de tuples..."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "e3846d2b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(-1, 0)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lst = [(4,5), (-1, 0), (2.5, 1)]\n",
"len (lst)\n",
"lst[1]"
]
},
{
"cell_type": "markdown",
"id": "15b98fb6",
"metadata": {},
"source": [
"Ici, on crée une liste de trois tuples.\n",
"\n",
"Que peuvent représenter ces trois tuples ?\n",
"\n",
"On peut vérifier qu'il s'agut bien d'un tuple :"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "7ce7324e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = lst[1]\n",
"type(t)"
]
},
{
"cell_type": "markdown",
"id": "8edf8304",
"metadata": {},
"source": [
"On peut également accéder directement à l'abscisse ou à l'ordonnée d'un point :"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "056d9616",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lst[2][1]"
]
},
{
"cell_type": "markdown",
"id": "3622be65",
"metadata": {},
"source": [
"Ici, on accède donc à la première valeur du tuple n°2."
]
},
{
"cell_type": "markdown",
"id": "8001f10a",
"metadata": {},
"source": [
"------"
]
},
{
"cell_type": "markdown",
"id": "572e8c71",
"metadata": {},
"source": [
"## Parcours"
]
},
{
"cell_type": "markdown",
"id": "bbd95e5a",
"metadata": {},
"source": [
"Soit une liste de dictionnaires"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "7ad98a69",
"metadata": {},
"outputs": [],
"source": [
"persos = [{\"prenom\" : \"Bilbo\", \"nom\" : \"Baggins\", \"age\" : 111},\n",
" {\"prenom\" : \"Frodo\", \"nom\": \"Baggins\", \"age\" : 33},\n",
" {\"prenom\" : \"Sam\", \"nom\": \"Gamgee\", \"age\" : 21}]"
]
},
{
"cell_type": "markdown",
"id": "79500e4c",
"metadata": {},
"source": [
"On peut parcourir cette liste en séparant chaque dictionnaire :"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "e1f9d519",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"----------\n",
"prenom : Bilbo\n",
"nom : Baggins\n",
"age : 111\n",
"----------\n",
"prenom : Frodo\n",
"nom : Baggins\n",
"age : 33\n",
"----------\n",
"prenom : Sam\n",
"nom : Gamgee\n",
"age : 21\n"
]
}
],
"source": [
"for p in persos:\n",
" print (\"----------\")\n",
" for k, v in p.items():\n",
" print (k, ' : ', v)"
]
},
{
"cell_type": "markdown",
"id": "2e16c4c1",
"metadata": {},
"source": [
"Que fait la première boucle ? La seconde ?"
]
},
{
"cell_type": "markdown",
"id": "64e9f3d8",
"metadata": {},
"source": [
"------"
]
},
{
"cell_type": "markdown",
"id": "8c553978",
"metadata": {},
"source": [
"## Les compréhensions"
]
},
{
"cell_type": "markdown",
"id": "37f82c8b",
"metadata": {},
"source": [
"> La notation en compréhension permet de créer une liste ou un dictionnaire sans en lister les élèments de manière explicite."
]
},
{
"cell_type": "markdown",
"id": "c051c29f",
"metadata": {},
"source": [
"Par exemple, pour créer une liste comportant les entiers de 2 à 10 inclus :"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "2ff74969",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[2, 3, 4, 5, 6, 7, 8, 9, 10]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[i for i in range (2, 11)]"
]
},
{
"cell_type": "markdown",
"id": "ba1daaa0",
"metadata": {},
"source": [
"On peut aussi appliquer des fonctions à chaque élément :"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "a1f0ed4a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[4, 9, 16, 25, 36, 49, 64, 81, 100]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[i ** 2 for i in range (2, 11)]"
]
},
{
"cell_type": "markdown",
"id": "25813435",
"metadata": {},
"source": [
"Enfin, il est possible d'appliquer des conditions dans votre déclaration de structures:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "34096ef5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[9, 49, 169, 289, 529, 729, 1089, 1369, 1849, 2209]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[i ** 2 for i in range (2, 51) if (i ** 2) % 10 == 9]"
]
},
{
"cell_type": "markdown",
"id": "cf329e0d",
"metadata": {},
"source": [
"Que fait cette instruction ?\n",
"\n",
"Pour les dictionnaires : la syntaxe est la même, il faut juste préciser la clé et la valeur de chaque élèment :"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f974717b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{2: 8, 3: 27, 4: 64, 5: 125, 6: 216, 7: 343, 8: 512, 9: 729, 10: 1000}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"{k: k ** 3 for k in range (2, 11)}"
]
},
{
"cell_type": "markdown",
"id": "ae71eaa0",
"metadata": {},
"source": [
"Cela va créer un dictionnaire donc chaque clé sera un nombre entre 2 et 11 non compris, et où la valeur de chaque clé sera le cube de la clé associée.\n",
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}