Files
1ereNSI/representation_construits/chapitre_1/.ipynb_checkpoints/README-checkpoint.ipynb

683 lines
16 KiB
Plaintext
Raw Normal View History

2021-11-15 16:41:55 +01:00
{
"cells": [
{
"cell_type": "markdown",
"id": "8e7931fd",
"metadata": {},
"source": [
"# Représentation des données : tuples, listes et itérations"
]
},
{
"cell_type": "markdown",
"id": "eb82a1d6",
"metadata": {},
"source": [
"> ***Contenue*** : Notions introduites : le type conteneur, avec les listes, les tuples, parcours de séquences. \n",
"\n",
"> ***Compétences*** : Comprendre la différence entre une liste python et un tuple. Maîtriser la création de conteneurs sur Python."
]
},
{
"cell_type": "markdown",
"id": "351877cc",
"metadata": {},
"source": [
"## Le programme"
]
},
{
"cell_type": "markdown",
"id": "72d95029",
"metadata": {},
"source": [
"------\n"
]
},
{
"cell_type": "markdown",
"id": "e0891811",
"metadata": {},
"source": [
"![bo_tuple](../assets/bo_tuple.png)"
]
},
{
"cell_type": "markdown",
"id": "d2f3b985",
"metadata": {},
"source": [
"![bo_liste](../assets/bo_liste.png)"
]
},
{
"cell_type": "markdown",
"id": "b9d904ad",
"metadata": {},
"source": [
"## Apport de connaissances"
]
},
{
"cell_type": "markdown",
"id": "ff539106",
"metadata": {},
"source": [
"----"
]
},
{
"cell_type": "markdown",
"id": "9c9c328a",
"metadata": {},
"source": [
"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.\n",
"\n",
"Ici nous allons voir trois types de conteneurs en particulier : les tuples, les listes, et enfin les dictionnaires. 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."
]
},
{
"cell_type": "markdown",
"id": "aa48414d",
"metadata": {},
"source": [
"------"
]
},
{
"cell_type": "markdown",
"id": "3895f0e2",
"metadata": {},
"source": [
"### Les listes"
]
},
{
"cell_type": "markdown",
"id": "c4141b1e",
"metadata": {},
"source": [
"Pour le moment, nous n'avons appris à travailler qu'avec un nombre limité de variables. Cependant, il peut arriver que vous deviez lire, stocker, traiter et enfin imprimer des dizaines, voire des centaines ou des milliers de valeurs de données. Comment stocker et accéder efficacement à ces données ? \n",
"\n",
"Par exemple, si l'on décide de de manipuler une demi-douzaine de variables, doit on les déclarer comme ceci : "
]
},
{
"cell_type": "markdown",
"id": "487520fb",
"metadata": {},
"source": [
"var1 = int(input())\n",
"var2 = int(input())\n",
"var3 = int(input())\n",
"var4 = int(input())\n",
"var5 = int(input())\n",
"var6 = int(input())"
]
},
{
"cell_type": "markdown",
"id": "4693983f",
"metadata": {},
"source": [
"Nous allons voir qu'avec une liste, nous allons pouvoir déclarer une variable à valeurs multiples."
]
},
{
"cell_type": "markdown",
"id": "3764753e",
"metadata": {},
"source": [
"---------"
]
},
{
"cell_type": "markdown",
"id": "888b14c9",
"metadata": {},
"source": [
"### Créer une liste\n"
]
},
{
"cell_type": "markdown",
"id": "34e6d597",
"metadata": {},
"source": [
"Créer une liste vide :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a0b2f16b",
"metadata": {},
"outputs": [],
"source": [
"nom_liste = []"
]
},
{
"cell_type": "markdown",
"id": "0010c492",
"metadata": {},
"source": [
" On peut les créer par ***extension*** (comprendre *liste déclarée littéralement*) comme ceci :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ea5c9f4b",
"metadata": {},
"outputs": [],
"source": [
"nom_liste = [3, 8, 5, 4]"
]
},
{
"cell_type": "markdown",
"id": "0621a32d",
"metadata": {},
"source": [
"Mais aussi par ***compréhension*** (itération, que l'on verra plus loin)\n",
"\n",
"On peut tester ça dans la console python "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "21bf0b13",
"metadata": {},
"outputs": [],
"source": [
"lst = [2, 3, 5, 7 ]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4192f777",
"metadata": {},
"outputs": [],
"source": [
"type (lst)"
]
},
{
"cell_type": "markdown",
"id": "7c8925ab",
"metadata": {},
"source": [
"On peut afficher la liste de la même manière qu'une variable classique : avec la commande *print* "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9b7f5057",
"metadata": {},
"outputs": [],
"source": [
"print (lst)"
]
},
{
"cell_type": "markdown",
"id": "5e01b094",
"metadata": {},
"source": [
"--------"
]
},
{
"cell_type": "markdown",
"id": "60990b42",
"metadata": {},
"source": [
"### Accéder aux élèments d'une liste"
]
},
{
"cell_type": "markdown",
"id": "f2572686",
"metadata": {},
"source": [
"Les élèments d'une liste peuvent être comparé à des élèments d'une séquence : chaque élèment a une position précise dans la liste, comme nous l'avons vu pour les chaînes de caractères (*str*)\n",
"\n",
"On appelle cette position *indice*, c'est cet indice qui nous permet d'accéder à un élèment en particulier.\n",
"\n",
"Le premier élèment d'une liste a pour indice **0**\n",
"\n",
"Tout comme avec les chaînes de caractères, un indice négatif permet d'accéder l'élèment en partant de la fin\n",
"\n",
"Pour connaître le nombre total d'élèments dans une liste, on utilise la fonction ***len***"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "903af397",
"metadata": {},
"outputs": [],
"source": [
"lst = [2,4,6,8]\n",
"len (lst)"
]
},
{
"cell_type": "markdown",
"id": "68933336",
"metadata": {},
"source": [
"On peut désigner une **tranche** en indiquant l'indice du premier élèment, ainsi que celui du dernier ***non inclus***"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8368df4",
"metadata": {},
"outputs": [],
"source": [
"lst [1:3]"
]
},
{
"cell_type": "markdown",
"id": "1ff6aae5",
"metadata": {},
"source": [
"Attention : Un indice qui dépasse la valeur *longueur de la liste - 1* provoquera une erreur dans votre code"
]
},
{
"cell_type": "markdown",
"id": "3284e1b0",
"metadata": {},
"source": [
"---------"
]
},
{
"cell_type": "markdown",
"id": "e4e3c049",
"metadata": {},
"source": [
"### Parcours d'une liste"
]
},
{
"cell_type": "markdown",
"id": "3a0de921",
"metadata": {},
"source": [
"Comme indiqué plus haut, il est possible de créer et de parcourir une liste par une méthode dite *de compréhension* ou *itération*\n",
"\n",
"Celà signifie qu'on construit une liste à partir d'élèments itérables : que l'on peut répétèr. Par exemple :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "289a75cf",
"metadata": {},
"outputs": [],
"source": [
"liste = [x for x in range(5)]\n",
"print(liste)"
]
},
{
"cell_type": "markdown",
"id": "1f8399fe",
"metadata": {},
"source": [
"Que vous affiche la console ?\n",
"\n",
"L'intérêt des listes par compréhension, c'est que l'on peut utiliser les structures conditionnelles, à l'aide de boucles...\n",
"\n",
"On peut également initialiser une liste à partir d'une autre liste "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a3360286",
"metadata": {},
"outputs": [],
"source": [
"liste = [1, 2, 3, 4]\n",
"nouvelle_liste = [2 * x for x in liste]\n",
"print(nouvelle_liste)"
]
},
{
"cell_type": "markdown",
"id": "d7262a39",
"metadata": {},
"source": [
"Une fois que la liste est crée, on peut la parcourir :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a9e9e9ec",
"metadata": {},
"outputs": [],
"source": [
"for elt in lst:\n",
" print (elt, end='')"
]
},
{
"cell_type": "markdown",
"id": "bded0a4f",
"metadata": {},
"source": [
"Ici, on va afficher chaque élèment de la liste lst\n",
"\n",
"On peut également utiliser une boucle en itérant l'indice i des élèments :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "26be31c2",
"metadata": {},
"outputs": [],
"source": [
"for i in range (len(lst)):\n",
" print(lst[i], end='')"
]
},
{
"cell_type": "markdown",
"id": "78dc79dd",
"metadata": {},
"source": [
"Ici, pour i compris entre 0 et longueur de lst, on va affichier l'élèment correspondant à l'indice valant i.\n",
"\n",
" À faire : \n",
"\n",
"- créer une liste par extension, puis par itération\n",
"- afficher les élèments d'une liste"
]
},
{
"cell_type": "markdown",
"id": "e4e5f08f",
"metadata": {},
"source": [
"-------\n"
]
},
{
"cell_type": "markdown",
"id": "baa22c54",
"metadata": {},
"source": [
"### Propriétés d'une liste"
]
},
{
"cell_type": "markdown",
"id": "ab2684f4",
"metadata": {},
"source": [
"Une liste peut être modifiable : on parle d'un objet *mutable*\n",
"\n",
"- On peut donc supprimer un élèment d'une liste avec le mot clé *del*\t"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "afc4143f",
"metadata": {},
"outputs": [],
"source": [
"lst = [1,2,3,4,5]\n",
"del lst[0]\n",
"print(lst)"
]
},
{
"cell_type": "markdown",
"id": "72921eae",
"metadata": {},
"source": [
"Il faut noter qu'en supprimant l'élèment situé à l'indice 0, j'ai donc fait changer tous les indices des élèments de la liste !\n",
"On peut également ajouter un élèment à la liste : "
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3e6aeb54",
"metadata": {},
"outputs": [],
"source": [
"lst = [1,2,3,4,5]\n",
"lst.append(6)\n",
"print (lst)"
]
},
{
"cell_type": "markdown",
"id": "c2ae9958",
"metadata": {},
"source": [
"L'élèment ajouté se positionne donc à la *fin* de la liste\n",
"\n",
"Pour modifier un élèment en particulier, on lui affecte une nouvelle valeur :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3e5d91ec",
"metadata": {},
"outputs": [],
"source": [
"lst = [1,2,3,4,5]\n",
"lst[1] = 8\n",
"print (lst)"
]
},
{
"cell_type": "markdown",
"id": "744a1b5f",
"metadata": {},
"source": [
"Il est préférable de ne stocker que des données de même type dans une liste\n",
"\n",
"Une liste peut être passée comme paramètre d'une fonction"
]
},
{
"cell_type": "markdown",
"id": "0752a875",
"metadata": {},
"source": [
"--------"
]
},
{
"cell_type": "markdown",
"id": "c3334da3",
"metadata": {},
"source": [
"## Les tuples (ou p-uplets)"
]
},
{
"cell_type": "markdown",
"id": "950ac9c0",
"metadata": {},
"source": [
" À la différence des listes, les tuples ne sont ***pas mutables***. On ne peut donc plus les modifier une fois créés, leur taille est fixe.\n",
"\n",
"Mais ils peuvent néanmoins contenir des données de différents types.\n",
"\n",
"Pour initialiser un tuple, on utilise cette syntaxe :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c9650c65",
"metadata": {},
"outputs": [],
"source": [
"tuple = (1, 3)\n",
"print (tuple)"
]
},
{
"cell_type": "markdown",
"id": "6696bdfa",
"metadata": {},
"source": [
"Ici, de la même manière que les listes, on pourra accéder à un élèment en particulier via son indice"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6bf823b5",
"metadata": {},
"outputs": [],
"source": [
"tuple = (1, 3, 5, 7, 9)\n",
"tuple[-1]"
]
},
{
"cell_type": "markdown",
"id": "38639578",
"metadata": {},
"source": [
"De plus, on peut tout à fait utiliser l'itération pour construire ou parcourir une structure tuple.\n",
"\n",
"Enfin, il est courant, dans une fonction, de renvoyer plusieurs valeurs. Par exemple, via ce type de syntaxe :"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fc1d8a8a",
"metadata": {},
"outputs": [],
"source": [
"return a, b"
]
},
{
"cell_type": "markdown",
"id": "13f8b5ab",
"metadata": {},
"source": [
"En réalité, cette syntaxe signifie : return (a, b) : on a donc un tuple composé des variables a et b qui est renvoyé."
]
},
{
"cell_type": "markdown",
"id": "ad602ab2",
"metadata": {},
"source": [
"-----"
]
},
{
"cell_type": "markdown",
"id": "e758cc26",
"metadata": {},
"source": [
"### À retenir:"
]
},
{
"cell_type": "markdown",
"id": "b3e871a6",
"metadata": {},
"source": [
"***Pour les listes et tuples :***"
]
},
{
"cell_type": "markdown",
"id": "735fd28c",
"metadata": {},
"source": [
"| Opération | Résultat |\n",
"| ---------- | ------------------------------------------------------------ |\n",
"| x in t | Renvoie True si un élément de t est égal à x |\n",
"| x not in t | Renvoie True si aucun élément de t n'est égal à x, False sinon |\n",
"| len(t) | Renvoie le nombre d'éléments de t |\n",
"| t == t1 | Renvoie True si t et t1 sont de même type, ont la même longueur, et ont des éléments égaux 2 à 2 |"
]
},
{
"cell_type": "markdown",
"id": "58ea35dc",
"metadata": {},
"source": [
"| Opération | Résultat |\n",
"| ---------- | ------------------------------------------------------------ |\n",
"| t[i] | Renvoie l'élément d'indice i de t |\n",
"| t[i:j] | Renvoie une partie de t de l'indice i à j non inclus |\n",
"| t.index(x) | Renvoie l'indice de la première apparition de x dans t |\n",
"| t.count(x) | Renvoie le nombre d'apparitions de x dans t |\n",
"| s + t | Renvoie une nouvelle séquence qui correspond à la concaténation de s et de t (seulement si s et t ont le même type |"
]
},
{
"cell_type": "markdown",
"id": "2e470d2f",
"metadata": {},
"source": [
"***Uniquement pour les listes :*** "
]
},
{
"cell_type": "markdown",
"id": "7844385e",
"metadata": {},
"source": [
"| Opération | Résultat |\n",
"| -------------- | ------------------------------------------------------------ |\n",
"| l.append(x) | Ajoute l'élément x à la fin de la liste l |\n",
"| l[i] = x | Modifie la liste et affecte la valeur x à la case d'indice i |\n",
"| l.insert(i, x) | Insère l'élément x dans la liste l à la position de l'indice i |\n",
"| l.remove(x) | Supprime de la liste le premier élément dont la valeur est égale à x |\n",
"| l.pop(i) | Enlève de la liste l'élément à la position i et renvoie sa valeur |\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
}