diff --git a/representation_construits/chapitre_2/README.ipynb b/representation_construits/chapitre_2/README.ipynb deleted file mode 100644 index 68de91c..0000000 --- a/representation_construits/chapitre_2/README.ipynb +++ /dev/null @@ -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\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 -} diff --git a/representation_construits/chapitre_3/README.ipynb b/representation_construits/chapitre_3/README.ipynb deleted file mode 100644 index 80c5b67..0000000 --- a/representation_construits/chapitre_3/README.ipynb +++ /dev/null @@ -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 -}