Theme 9(bis)
Upcoming SlideShare
Loading in...5
×
 

Theme 9(bis)

on

  • 399 views

 

Statistics

Views

Total Views
399
Views on SlideShare
399
Embed Views
0

Actions

Likes
1
Downloads
14
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Theme 9(bis) Theme 9(bis) Presentation Transcript

  • Theme 9Approfondir les structures de données (Listes, tuples et dictionnaires)
    2011-04-07
    1
  • Les listes: Accès aux éléments
    nombres=[5,38,10,25]
    Accéder à un seul élément (index)
    Ex: print(nombres[2])
    10
    Accéder à plusieurs éléments (slicing: découpage en tranches)
    Ex: print(nombres[1:3])
    [38, 10] #tranche de type liste
    Ex: print(nombres[2:3])
    [10]
    Ex: print(nombres[2:])
    [10,25]
    Ex: print(nombres[-1])
    25
    Ex: print(nombres[-3])
    38
    2
  • nombres = [17, 38, 10, 25, 72]
    Trier une liste
    Ex: nombres.sort()
    Inverser l’ordre des éléments
    Ex: nombres.reverse()
    Retrouver l'index d'un élément (le premier rencontré)
    Ex: nombres.index(17)
    Enlever un élément (le premier rencontré)
    Ex: nombres.remove(38)
    Enlever un élément à un index
    Ex: del(nombres[2])
    Ex: del(nombres[2:4])
    3
    Les listes: autres opérations
  • Les listes: Remplacement d’éléments
    mots = ['jambon', 'fromage', 'confiture', 'chocolat']
    Insertion dans une liste
    Ex: mots[2:2] = ['miel']
    Ex: mots[5:5] =['saucisson', 'ketchup']
    Suppression de la liste
    Ex: mots[2:2] = ['miel']
    Ex: mots[2:5]=[]
    Ex: mots[1:3] = ['salade']
    4
  • Exercice 9.1
    Écrire un programme qui permet de simuler une gestion de la file d’attente suivante dans un centre de services
    ['client 1','client 2','client 3','client 4','client 5','client 6','client 7']
    Sans utiliser un compteur de boucles
    Le premier client arrivé dans le centre de services est 'client 1‘
    Le résultat de la simulation serait
    ['client 1'] est en cours de service, il reste les clients suivants dans la liste ['client 2','client 3','client 4','client 5','client 6','client 7'] dans la file
    ['client 1'] servi
    ['client 2'] est en cours de service, il reste les clients suivants dans la liste ['client 3','client 4','client 5','client 6','client 7'] dans la file
    ['client 2'] servi
    Etc..
    5
  • Exercice 9.2
    Écrire un programme qui permet de comparer deux listes
    Par exemple comparer deux à deux les listes suivantes
    liste1=[76,23,14,2,33,18]
    liste2=[23,76,33,18,2,14]
    liste3=[2,56,85,12,1,1]
    Pour cela nous utiliserons la fonction sort()
    6
  • Les listes et la fonction range
    La fonction range fournit un ensemble de nombres (objet particulier appelé itérateur)
    range( [départ,]arrivée[,pas])
    Nous pouvons construire une liste à partir de cet ensemble avec list()
    Ex: list(range(2,10))
    Nous pouvons aussi construire un tupleà partir de cet ensemble avec tuple()
    Ex: tuple(range(4,25,6))
    7
  • Les tuples
    Types de données composites: chaînes, listes + tuples
    Chaines Vs listes
    Composition: caractères Vs différents types
    Non modifiables Vs modifiables
    Tuple
    Composition: différents types
    Non modifiable
    Syntaxe
    Ex: monTuple=('anne','cote',24,'etudiante')
    8
  • Similaires aux opérations sur les listes, sauf opérations de modification(ajout et suppression)
    Longeur d’un tuple: len(monTuple)
    Accès à un élément
    monTuple[3]
    monTuple[1:] (le slicing retourne un tuple)
    Conversion en liste
    Liste = list(monTuple)
    9
    Les tuples: les opérations
  • Exercice 9.3
    Écrire un programme qui permet de charger des villes ainsi que leurs coordonnées (latitude, longitude) enregistrées dans un fichier «villes.txt ».
    Pour que ces informations ne soient pas modifiées tout au long du programme, nous désirons les inscrire dans des tuples.
    Les différents tuples seront enregistrés dans une liste définie dans le programme
    10
  • Surcharge de l’opérateur +
    Applicable aux chaines, listes et tuples
    Opérateur + (concaténation):
    uneChaine = "aaabbb ccc "
    uneChaine = " --- "+uneChaine+ " --- "
    liste = liste + ['jambon', 'fromage', 'confiture']
    liste1 = liste + [‘recette']
    montuple = tuple1+tuple2
    montuple=tuple6+montuple+tuple3
    11
  • Surcharge de l’opérateur *
    Applicable aux chaines, listes et tuples
    uneChaine = "aaabbb cccc " *3
    uneChaine = unechaine+" "+unechaine*3
    liste = liste*3
    liste1 = liste +[‘recette']
    montuple= (tuple6*montuple+tuple3)*2
    12
  • Les dictionnaires
    Type composite
    Chaînes, listes et tuples: séquences ordonnées (les éléments sont indexés par des séquences d’entiers)
    Dictionnaire:
    Opérations: La plupart est similaire avec celles des listes
    Différence: Les éléments sont indexés par clés uniques
    Une clé: alphabétique, numérique, ou type composite(sous certaines conditions)
    Les éléments peuvent être de n’importe quel type de donnée
    13
  • Création d’un dictionnaire
    Initialisation directe
    Initialisation par ajout élément par élément
    14
    dico = {'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'}
    printdico["computer"]
    dico = {} #intialisationd’un dictionnaire
     
    dico["a"]=["arbre","alien","abrit"]
    dico["b"]=["betise","batiment"]
    dico["c"]=["cat","cale","cailloux"] 
     
    printdico
    print dico["a"]
    print dico["a"][2]
  • Opérations sur les dictionnaires
    Enlever un élément
    Exemple: deldico["a"]
    Test d’appartenance d’une clé
    print  "b" in dico
    if "b" in dico:
    print "Trouvé!"
    Liste des clés du dictionnaire
    printdico.keys()
    Liste des valeurs du dictionnaire
    printdico.values()
    15
  • Parcours d’un dictionnaire
    Itérer sur les clés
    for uneClein dico:
    printuneCle,dico[uneCle]
    Lister les couples (clé, valeur) du dicitonnaire sous forme de liste de tuples
    liste = dico.items()
    print liste
    Parcourir les tuples de clés et leurs éléments associés
    for uneCle, uneValeurin dico.items():
    printuneCle,uneValeur
    16
  • Remarques
    Les dictionnaires ne sont pas des séquences (les indexes n’ont pas d’ordre déterminé)
    Erreur si on essaye de
    Concaténer
    Extraction d’éléments contigus (slicing)
    Possibilité d’affecter un indice (la clé) contrairement aux listes
    17
  • Exercice 9.4
    Nous désirons représenter la matrice suivante à l’aide d’un dictionnaire:
    18
  • Solution
    A chaque couple (ligne, colonne) correspond un élément
    Représenter le couple par un tuple
    Indexer l’élément par le couple (ligne, colonne) correspondant
    dico[(0,2)]=["roi"]
    dico[(1,0)]=["pion"]
    dico[(3,1)]=["reine"]
    dico[(4,0)]=["tour"]
    dico[(5,2)]=["chevalier"]
    Tester
    printdico[(5,5)] !!!
    19
  • Solution au probleme de clé non définie
    Traiter le cas des clés inexistantes dans le dictionnaire: fonction get()
    Exemple: printechiquier.get((5,5), "non existant")
    20
    clé
    Message a afficher dans le cas ou la clé n’existe pas
  • Exercice 9.5
    Écrivez une fonction qui échange les clés et les valeurs d’un dictionnaire (ce qui permettra par exemple de transformer un dictionnaire anglais/français en un dictionnaire français/anglais).
    On suppose que le dictionnaire ne contient pas plusieurs valeurs identiques.
    21
  • Exercice 9.6
    Écrivez un script qui crée un mini-système de base de données fonctionnant a l’aide d’un dictionnaire, dans lequel vous mémoriserez les noms d’une série de copains, leur âge et leur taille.
    Votre script devra comporter deux fonctions : la première pour le remplissage du dictionnaire, et la seconde pour sa consultation
    Dans la fonction de remplissage, utilisez une boucle pour accepter les données entrées par l’utilisateur. Dans le dictionnaire, le nom de l’élève servira de clé d’accès, et les valeurs seront constituées de tuples(âge, taille).
    La fonction de consultation comportera elle aussi une boucle, dans laquelle l’utilisateur pourra fournir un nom quelconque pour obtenir en retour le couple ≪ âge, taille ≫ correspondant.
    22