{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Les ensembles (set)\n", "- Les ensembles sont des objets **mutables**. \n", "- Ils contiennent des objets qui sont **uniques** et non mutables. Ainsi, un ensemble ne peut pas contenir une liste !\n", "- Il n'y a pas d'indexation des valeurs !" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## I) Définition" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### a) Définition directe" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2, 3}\n" ] } ], "source": [ "#séquence simple\n", "s={1,2,3}\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2, 3, 5}\n" ] } ], "source": [ "#les répétitions disparaissent\n", "s={1,2,3,1,2,2,3,5}\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "set()\n" ] } ], "source": [ "#définition d'une séquence vide. Attention {} crée un dictionnaire vide.\n", "s=set()\n", "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### b) Conversion d'une liste" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 5, 4, 3, 2, 1]\n", "{1, 2, 3, 4, 5}\n" ] } ], "source": [ "L=[1,2,3,5,4,3,2,1]\n", "s=set(L)\n", "print(L)\n", "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### c) Par compréhension" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}\n" ] } ], "source": [ "# Les restes par la division par 13\n", "s={x%13 for x in range(1000)}\n", "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## II) Manipulation\n", "Il n'y a pas d'indexation des éléments, contrairement aux listes." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}\n" ] }, { "ename": "TypeError", "evalue": "'set' object does not support indexing", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m10\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ms\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: 'set' object does not support indexing" ] } ], "source": [ "s=set(range(10))\n", "print(s)\n", "print(s[2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### a) Parcours par une boucle" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'b', 'c', 'a'}\n", "b\n", "c\n", "a\n" ] } ], "source": [ "# l'ordre est surprenant !\n", "s={\"a\",\"b\",\"c\"}\n", "print(s)\n", "for el in s :\n", " print(el)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### b) Ajout ou suppression" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'d', 'b', 'c', 'a'}\n" ] } ], "source": [ "# ajoute un élément s'il est absent\n", "s={\"a\",\"b\",\"c\"}\n", "s.add(\"a\") # aucune action ici\n", "s.add(\"d\")\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'b', 'c'}\n" ] } ], "source": [ "# enléve un élément s'il est présent\n", "s={\"a\",\"b\",\"c\"}\n", "s.discard(\"e\") # aucune action ici\n", "s.discard(\"a\")\n", "print(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### c) Union, intersection, diffférence, comparaison" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2, 3, 4, 5, 6, 7}\n" ] } ], "source": [ "#union de deux ensembles\n", "sa={1,2,3,4}\n", "sb={3,4,5,6,7}\n", "\n", "s=sa|sb\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{3, 4}\n" ] } ], "source": [ "#intersection de deux ensembles\n", "sa={1,2,3,4}\n", "sb={3,4,5,6,7}\n", "\n", "s=sa&sb\n", "print(s)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{1, 2}\n", "{5, 6, 7}\n" ] } ], "source": [ "#différence de deux ensembles\n", "sa={1,2,3,4}\n", "sb={3,4,5,6,7}\n", "\n", "print(sa-sb)\n", "print(sb-sa)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "False\n", "True\n" ] } ], "source": [ "#comparaison de deux ensembles\n", "sa={3,4}\n", "sb={3,4,5,6,7}\n", "\n", "print(sa==sb) #égalité ?\n", "print(sa