COURS INFORMATIQUE : Structures de données, rappels sur les listes PC PICON PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 1 / 28 1 Structures de données : généralités 2 Rappels : quelques structures de données en Python tuples listes Entrer une liste Rappels sur le découpage de liste ou slicing Trouver des éléments Modifier une liste Cas particulier de la copie Trier, Inverser l’ordre, Trouver des extremums Exercices PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 2 / 28 Structures de données, généralités Un langage de programmation possède des types de données simples. Leur traitement est presque immédiat, très proche du traitement du processeur. Par exemple en Python, on peut considérer comme type simple Les entiers Les flottants Les booléens Les caractères PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 3 / 28 Structures de données, généralités Ces types de données ne permettent pas de traiter facilement les données plus complexes. Exemple : programmation d’un traitement de texte. On a donc besoin de types complexes ou composés. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 4 / 28 Structures de données, généralités Vous avez déjà vu des types composés en Python par exemple les complexes, les listes, les tuples les chaînes de caractères, (c’est un peu faux en Python) les matrices du module numpy. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 5 / 28 Structures de données, généralités Il en existe d’autres, les dictionnaires par exemple. En réalité, Python est un langage orienté objet assez peu structuré et la notion de type simple est modifié par la notion de classe. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 6 / 28 Structures de données, généralités Conséquence : on crée des types de données complexes pour répondre à une tache précise. Par exemple : les tuples pour ordonner différents objets les listes pour ordonner et traiter différents objets les matrices pour les sciences mais aussi le traitement d’image les chaînes de caractères pour traiter du texte PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 7 / 28 Structures de données, généralités Créer une structure de donnée c’est : Organiser des types simples de façon structurée en vue de les traiter Créer les opérations de traitement. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 8 / 28 Structures de données, généralités Cette création peut être ordonnée par l’algorithme en vue de traiter un problème. En fait souvent la réflexion sur le type de structure de donnée est préalable à l’algorithme. Il s’agit ensuite de mettre en œuvre dans le langage de programmation donné le nouveau type de données et l’algorithme. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 9 / 28 Selon le langage de programmation, les types structurés classiques peuvent être déjà en place (on dit implémentés) ou bien doivent être programmés. En Fortran (langage très scientifique), les matrices sont implémentées. En Python, elles sont dans un module numpy. Si on n’a pas ce module, il faut reprogrammer toutes les opérations. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 10 / 28 Prenons l’exemple des tuples Mise en oeuvre en machine Organiser les données : Créer une case mémoire pour chaque élément du tuple Créer une chaîne d’adresses pour reconstituer l’ordre du tuple PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 11 / 28 Traitement Accéder à un élément Connaître la longueur du tuple. On rentre un tuple l’ouverture d’une parenthèse : >>> A=("e",4,3.8,’ceci est une phrase’) On accède à un élément par son numéro >>> A[2] 3.8 Et comme d’habitude on commence par 0 On récupère la longueur par >>> len(A) 4 PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 12 / 28 À quoi ça sert un tuple ? À aller plus vite qu’avec les listes. À être sur qu’on ne modifie pas les données. À pouvoir être parcouru, par une variable par exemple. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 13 / 28 Rappels sur les listes en Python Une liste est une structure souple qui peut grandir ou rétrécir à volonté. Ses éléments sont accessibles à tout moment, peuvent être insérés ou supprimés à n’importe quel endroit. On peut concaténer ou diviser une liste. Les opérations de base sur les listes sont de deux types : soient elles modifient la liste originale soit elle ne le fait pas. En général les méthodes modifient l’original et pas les fonctions. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 14 / 28 Ce qu’on peut faire sur une liste en Python Insérer un élément à une position Localiser un élément x en retournant la première position ou indice où il apparaît et un code s’il n’apparaît pas. Accéder à un élément en position p sans le retirer. Supprimer l’élément en position p. Accéder au précédent ou au suivant de l’élément en position p. Remettre à zéro la liste. Vérifier si la liste est non vide. Lister tous les éléments. Trier Inverser l’ordre PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 15 / 28 Python gère une particularité dans les listes : les données peuvent être de type différents (des chaînes de caractères, des entiers, des flottants etc.) PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 16 / 28 Entrer une liste : >>> A=["e",4,3.8,’ceci est une phrase’] Une liste est entourée par des crochets. Principales commandes : On accède et on peut modifier un élément de la liste >>> A[2]=1 >>> A [’e’, 4, 1, ’ceci est une phrase’] PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 17 / 28 On a la longueur d’une liste par >>> len(A) 4 Attention à la différence entre la longueur et l’indice du dernier élément ! PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 18 / 28 On peut chercher si un élément est dans la liste >>> 4 in A False >>> 5 in A True On a interêt à faire cet test avant d’essayer d’enlever une valeur ou de rechercher un index pour ne pas déclencher d’exception. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 19 / 28 Trouver le premier indice d’un élément dans une liste .index(valeur) compter le nombre de fois où un élément est dans une liste .count(valeur) PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 20 / 28 On peut ajouter un élément à la fin >>> A.append("nouveau") >>> A [’e’, 4, 1, ’ceci est une phrase’, ’nouveau’] On peut concaténer des listes >>> >>> >>> [1, A=[1,3,5] B=[2,8,7] A+B 3, 5, 2, 8, 7] Une autre méthode consiste à utiliser la méthode .extend(liste). Quelle différence entre ces deux façons de faire ? PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 21 / 28 On peut aussi insérer une valeur à un indice donné >>> A.insert(2,"*****") >>> A [’e’, 4, ’*****’, 1, ’ceci est une phrase’, ’nouveau’] Ou bien enlever un élément précis >>> A=[2,3,5,2,3] >>> A.remove(3) >>> A [2,5,2,3] Attention au résultat. Que fait précisement cette fonction ? PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 22 / 28 Ou bien enlever un élément indexé >>> A=[2,3,5,2,3] >>> del A[2] >>> A [2,3,2,3] Autre méthode .pop(indice) qui enlève la valeur situé à l’indice donné et la renvoie PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 23 / 28 Multiplier ! ! ! >>> A=[1,3,5] >>> A*3 [1, 3, 5, 1, 3, 5, 1, 3, 5] Bien sur, on multiplie par un entier PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 24 / 28 Cas particulier de la copie La copie indépendante de B dans A se fait par >>>A=B[:] ou par la méthode copy qui est plus générale >>>A=B.copy() PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 25 / 28 Quelle différence entre sorted() et .sort(). Et quelle restriction sur le type de liste ? fonctions max et min Quelle différence entre .reverse() et reversed() ? PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 26 / 28 définir la liste : liste =[17, 38, 10, 25, 72], puis effectuez les actions suivantes : – triez et affichez la liste ; – ajoutez l’élément 12 à la liste et affichez la liste ; – renversez et affichez la liste ; – affichez l’indice de l’élément 17 ; – enlevez l’élément 38 et affichez la liste ; – affichez la sous-liste du 2e au 3eélément ; – affichez la sous-liste du début au 2e élément ; – affichez la sous-liste du 3e élément à la fin de la liste ; PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 26 / 28 Réaliser les fonctions et le programme suivants. Réaliser une fonction genereListe qui renvoie une liste de 100 nombres entiers tirés au hasard dans l’intervalle [0,99] (bornes incluses). Réaliser une fonction combienNonPresents qui reçoit en paramètre une liste V d’entiers dans l’intervalle [0,99] et renvoie combien d’entiers entre 0 et 99 (inclus) ne sont pas présents dans la liste V. Réaliser le programme principal qui utilise ces fonctions pour estimer combien l’on a d’éléments non représentés en moyenne. Pour cela le programme calculera la moyenne du nombre d’éléments non représentés pour 30 listes tirées avec la fonction genereListe. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 27 / 28 Déterminer les 100 premiers termes de la suite définie par u1 = 1 et un+1 = 12 (un + a/un ) où a est un nombre strictement positif donné. PICON COURS INFORMATIQUE : Structures de données, rappels sur les listes 28 / 28