COURS INFORMATIQUE : Structures de données, rappels sur les

publicité
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
Téléchargement