SlideShare a Scribd company logo
1 of 22
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

More Related Content

What's hot

Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Mathieu Saby
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Mathieu Saby
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Laurent BUNIET
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala metaDamien GOUYETTE
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Pablo Tamarit
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineMathieu Saby
 
Coffee script
Coffee scriptCoffee script
Coffee scriptantho1404
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sqlHanfi Akram
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesSana Aroussi
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProEttore Rizza
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4Régis Lutter
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreECAM Brussels Engineering School
 

What's hot (19)

Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala meta
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
 
Php
PhpPhp
Php
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans Openrefine
 
Marzouk collection-map
Marzouk collection-mapMarzouk collection-map
Marzouk collection-map
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
516356
516356516356
516356
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sql
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 

Viewers also liked

Islam et le développement
Islam et le développement Islam et le développement
Islam et le développement centurywa
 
Bloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanasBloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanas25463196
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castleARCHOUK
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoLuz García
 
Livret formation
Livret formationLivret formation
Livret formationPSL34
 
New Public Management
New Public ManagementNew Public Management
New Public Managementsamirsharshar
 
MOOC DD animation evaluation par les pairs MOODLE retour expérience
MOOC DD  animation evaluation par les pairs MOODLE retour expérienceMOOC DD  animation evaluation par les pairs MOODLE retour expérience
MOOC DD animation evaluation par les pairs MOODLE retour expérienceFlorence Labord
 
2011 study tennis business
2011 study tennis business 2011 study tennis business
2011 study tennis business Kurt Salmon
 
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3lothomas
 
Simposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en PerúSimposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en PerúEduardo Zolezzi
 
Madame montour keynote 1
Madame montour keynote 1Madame montour keynote 1
Madame montour keynote 1luckydreamer45
 
La escuela de la alegría
La escuela de la alegríaLa escuela de la alegría
La escuela de la alegríaSergio Perez
 
Approachesparticipatives
ApproachesparticipativesApproachesparticipatives
ApproachesparticipativesCsdi Initiative
 
Perfil del periodista digital
Perfil del periodista digitalPerfil del periodista digital
Perfil del periodista digitalmearias
 

Viewers also liked (20)

Islam et le développement
Islam et le développement Islam et le développement
Islam et le développement
 
Bloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanasBloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanas
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castle
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercado
 
Livret formation
Livret formationLivret formation
Livret formation
 
New Public Management
New Public ManagementNew Public Management
New Public Management
 
MOOC DD animation evaluation par les pairs MOODLE retour expérience
MOOC DD  animation evaluation par les pairs MOODLE retour expérienceMOOC DD  animation evaluation par les pairs MOODLE retour expérience
MOOC DD animation evaluation par les pairs MOODLE retour expérience
 
Lymphoedeme post test
Lymphoedeme post testLymphoedeme post test
Lymphoedeme post test
 
Lecturas juridicas número 27
Lecturas juridicas número 27Lecturas juridicas número 27
Lecturas juridicas número 27
 
Madame montour 3
Madame montour 3Madame montour 3
Madame montour 3
 
2011 study tennis business
2011 study tennis business 2011 study tennis business
2011 study tennis business
 
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
 
Simposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en PerúSimposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en Perú
 
Aprendizaje y cambio
Aprendizaje y cambioAprendizaje y cambio
Aprendizaje y cambio
 
Madame montour keynote 1
Madame montour keynote 1Madame montour keynote 1
Madame montour keynote 1
 
La escuela de la alegría
La escuela de la alegríaLa escuela de la alegría
La escuela de la alegría
 
Encadrer les forfaits jours
Encadrer les forfaits joursEncadrer les forfaits jours
Encadrer les forfaits jours
 
la reforma laboral
la reforma laboralla reforma laboral
la reforma laboral
 
Approachesparticipatives
ApproachesparticipativesApproachesparticipatives
Approachesparticipatives
 
Perfil del periodista digital
Perfil del periodista digitalPerfil del periodista digital
Perfil del periodista digital
 

Similar to Theme 9(bis)

Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Aziz Darouichi
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfDrissRifai1
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQLMohammed Jaafar
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdfsalah fenni
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill Olivier Pinette
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer Alexandru Radovici
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.pptSiwarAbbes1
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: TableauInforMatica34
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptxMohammedErritali2
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfFadouaBouafifSamoud
 

Similar to Theme 9(bis) (20)

Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdf
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQL
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
Introduction_R.pdf
Introduction_R.pdfIntroduction_R.pdf
Introduction_R.pdf
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
 
Initiation r
Initiation rInitiation r
Initiation r
 
TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
 
POO-chapitre6.pptx
POO-chapitre6.pptxPOO-chapitre6.pptx
POO-chapitre6.pptx
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 

More from salmazen

More from salmazen (20)

Theme 10
Theme 10Theme 10
Theme 10
 
Theme 10
Theme 10Theme 10
Theme 10
 
Theme 8(suite)
Theme 8(suite)Theme 8(suite)
Theme 8(suite)
 
Cours python
Cours pythonCours python
Cours python
 
Theme 8
Theme 8Theme 8
Theme 8
 
Theme 7 (suite)
Theme 7 (suite)Theme 7 (suite)
Theme 7 (suite)
 
Theme 6
Theme 6Theme 6
Theme 6
 
Theme 5
Theme 5Theme 5
Theme 5
 
Exemples for1
Exemples for1Exemples for1
Exemples for1
 
Exemples while2
Exemples while2Exemples while2
Exemples while2
 
Exemples for
Exemples forExemples for
Exemples for
 
Exemples if
Exemples ifExemples if
Exemples if
 
Exemples while
Exemples whileExemples while
Exemples while
 
Theme3
Theme3Theme3
Theme3
 
Theme4
Theme4Theme4
Theme4
 
Theme3
Theme3Theme3
Theme3
 
Exercice0
Exercice0Exercice0
Exercice0
 
Theme2
Theme2Theme2
Theme2
 
Theme2
Theme2Theme2
Theme2
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)
 

Theme 9(bis)

  • 1. Theme 9Approfondir les structures de données (Listes, tuples et dictionnaires) 2011-04-07 1
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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]
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Exercice 9.4 Nous désirons représenter la matrice suivante à l’aide d’un dictionnaire: 18
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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