{ "cells": [ { "cell_type": "markdown", "id": "cbdef461", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "
\n", "Licence CC BY-NC-ND\n", "Thierry Parmentelat\n", "
\n", "\n", "" ] }, { "cell_type": "markdown", "id": "9d73abdc", "metadata": { "slideshow": { "slide_type": "" } }, "source": [ "# références partagées" ] }, { "cell_type": "code", "execution_count": 1, "id": "17c3c0de", "metadata": {}, "outputs": [], "source": [ "# pour visualiser le graphe de références\n", "%load_ext ipythontutor" ] }, { "cell_type": "markdown", "id": "084efb3f", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## imbrications\n", "\n", "naturellement, les différents types de containers \n", "peuvent être combinés à l'infini" ] }, { "cell_type": "code", "execution_count": 2, "id": "915ea132", "metadata": { "cell_style": "split" }, "outputs": [ { "data": { "text/plain": [ "[{'un': 'premier'}, {'Alice': 25, 'Bob': 34}]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# une liste de dictionnaires\n", "combo1 = [\n", " {'un': 'premier'},\n", " {'Alice': 25, 'Bob': 34},\n", "]\n", "combo1" ] }, { "cell_type": "code", "execution_count": 3, "id": "0d686f54", "metadata": { "cell_style": "split" }, "outputs": [ { "data": { "text/plain": [ "{1: ['un', 'one', 'uno'], 2: ['deux', 'two', 'due']}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# un dictionnaire de listes\n", "combo2 = {\n", " 1 : ['un', 'one', 'uno'],\n", " 2 : ['deux', 'two', 'due'],\n", "}\n", "combo2" ] }, { "cell_type": "markdown", "id": "0133975b", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## références partagées\n", "\n", "du coup on peut construire en mémoire des graphes, \n", "et atteindre le même objet par plusieurs chemins" ] }, { "cell_type": "code", "execution_count": 4, "id": "849d9593", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['a', 'b'], ['a', 'b']]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# créons un objet - ici une liste\n", "shared = ['a', 'b']\n", "# si je mentionne cet objet deux fois\n", "# dans une liste, je crée un partage\n", "entry = [shared, shared]\n", "entry" ] }, { "cell_type": "code", "execution_count": 5, "id": "ad0c0598", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['boom', 'b'], ['boom', 'b']]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# si bien qu'en modifiant l'objet partagé\n", "shared[0] = 'boom'\n", "# j'ai en fait modifié les deux morceaux de la liste\n", "entry" ] }, { "cell_type": "code", "execution_count": 6, "id": "f6a73297", "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "72975c53673d40d2b369ed74b97e311b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HTML(value='