SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 1
Chapitre 5 : Manipulation des itérables en python
 Effectuer des opérations de recherche sur différents types de conteneurs
 Manipuler les algorithmes de Tri
 Savoir leur complexité algorithmique
1. Recherche dans un conteneur non trié et dans une séquence triée
On a besoin de modifier la valeur d’un objet x par une nouvelle valeur y dans un
conteneur C. Il faut avant tout voir si x appartient à C. Python permet de faire un tel
traitement avec l’opérateur in ou l’opérateur not in. La réponse sera de type
booléen : True ou False.
Parfois, la réponse booléenne ne suffit pas ! On aura besoin de plus d’informations à
savoir l’emplacement de la valeur x qu’on cherche. Ceci est assuré par C.index(x).
On peut penser à d’autres situations plus élaborées si on veut chercher tous les
éléments dans C ayant la même valeur que x. On rappelle que C.count(x) calcule
le nombre d’occurrences de x dans C.
Ces traitements diffèrent selon le conteneur :
 Un conteneur à accès séquentiel : liste, chaîne ou tuple, ou à accès direct :
ensemble ou dictionnaire
 Trié : recherche guidée
 Non trié : recherche aveugle
a. Cas d’un conteneur non trié
Problématique : C = est un conteneur non trié. On veut vérifier si x appartient à C.
Rech1() effectue un parcours séquentiel de C. Elle itère sur les éléments de C et pas
sur les indices. A chaque fois, on vérifie si i==x, dans ce cas, on retourne vrai et on
quitte la fonction. Si tous les objets de C sont parcourus et on n’a jamais obtenu la
valeur vrai pour la condition x==i, alors on est sûr que l’élément cherché n’existe pas.
Exemple d’exécution :
Remarque : La recherche séquentielle n’est pas adaptée aux dictionnaires.
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 2
On propose maintenant une autre version de recherche basée sur les indices et non
pas les objets. La détermination du résultat de la recherche est basée sur la valeur
de i avec laquelle on quitte la boucle tant que. Si i atteint len(C), ceci veut dire
qu’on a parcouru tout le conteneur C.
On propose maintenant de trouver le premier x dans C. Pour ce faire, on propose la
méthode Rech3. Si on ne trouve pas l’élément x, on retourne généralement un
indice non existant (comme -1). Or Python utilise aussi un système d’indexation
négatif. Ainsi, il vaut mieux retourner None.
b. Cas d’une séquence triée
On suppose maintenant que le conteneur C est trié d’une manière croissante. La
recherche est guidée par la valeur de x :
Solution 1 :
Solution 2 :
Quand le conteneur est trié, on peut penser à procéder par dichotomie en suivant
les étapes suivantes :
 On calcule le milieu m du conteneur
 On compare C[m] à x :
o Si C[m]=x : Trouvé !
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 3
o Si C[m]>x : on continue la recherche dans la partition C[0 :m]
o Si C[m]<c : on continue la recherche dans la partition C[m+1 :]
 Ce principe est répété jusqu’à ce que le conteneur C ne contienne plus
d’éléments
Solution 3 : Traduisons cette version séquentielle/itérative de la recherche
dichotomique en une version récursive
c. Cas d’un dictionnaire
La position d’une entrée dans un dictionnaire est calculée à partir de sa clé. Une
fonction spéciale est utilisée pour ce faire, appelée fonction de hachage. Dans la
littérature, on croise pas mal de fonctions de hachage, on va considérer une
fonction qui se base sur les codes ascii des caractères constituants d’une clé.
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 4
2. Les tris
a. Tri par sélection
Le principe :
 Commencer à chercher l’indice du minimum de la liste L
 Permuter le 1er élément de la liste avec l’élément minimum trouvé
 Chercher l’indice du minimum des éléments de la sous liste L[1 :] et le
permuter avec le deuxième élément
 Continuer ce principe jusqu’à ce que la liste devienne triée
o On échange l’élément à la position i avec le minimum de la sous liste
L[i+1 :]. L’algorithme se termine au bout de n-1 boucles quand on a
trouvé n-1 minimums successifs
Le code :
b. Tri par fusion
Le principe :
C’est un algorithme de tri basé sur le principe de « Diviser pour régner ». On subdivise
la liste en deux sous listes de tailles presque égales, on trie en suite ces dernière puis
on les fusionne pour obtenir une liste triée.
L’algorithme utilise deux fonctions :
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 5
 Fonction fusion : Fusionne deux listes supposées triées en une seule. Par
exemple, fusion([1,2,4],[2,3,8]) renvoie [1,2,2,3,4,8]. L’algorithme de la fusion
procède comme suit :
o Comparer les premiers éléments des deux sous listes
o Ajouter le plus petit d’entre eux dans une liste résultat
o Avancer dans la liste d’où est ce que l’élément a été pris
o Si on termine tous les éléments d’une liste et qu’il reste encore des
éléments dans la seconde, on effectue une copie des éléments
restants directement
 Fonction tri : C’est une fonction récursive. Elle consiste à :
o Couper en deux la liste initiale
o Trier par appels récursifs les deux sous listes
o Fusionner les deux sous listes triées en utilisant la fonction fusion
Le code :
c. Tri rapide
Le principe :
C’est aussi un algorithme basé sur le paradigme « diviser pour régner » :
 Diviser : Il s’agit de choisir deux sous listes A et B contenant respectivement les
éléments de L qui sont inférieurs à p et ceux qui lui sont supérieurs ou égaux.
 Régner : Le même principe est appliqué pour trier les sous-listes A et B, jusqu’à
obtention de sous listes de tailles ≤ 1
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Complexité 6
 Combiner : Aucun effort de combinaison n’est nécessaire étant donné que
les sous listes sont déjà triés
Le code :
3. Complexité
a. Calcul des coûts des fonctions
Le calcul de coût consiste à déterminer le temps nécessaire à l’exécution des
différentes instructions d’un programme en fonction de la taille des données. Les
règles suivantes sont à prendre en considération :
Instruction Désignation Notation Formule de calcul du coût
Instruction simple input,
print,=,opérations
de comparaisons,
(==, !=,<=,…),
opérations
aréthmétiques
(+,,*,/,//,%,**),
break,
continue,return
Nécessite une
unité de temps à
leur exécution
1
Structure
conditionnelle
If condition:
i1
else:
i2
On note C1,C2,
C3 les temps
d’exécutions
respectifs
nécessaires à la
condition, i1 et i2
C1+max(C2,C3)
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Complexité 7
Boucle for for i in range(N) :
ins
On note ci le
temps
d’exécution du
bloc d’instruction
ins. Deux cas se
présentent :
 Le bloc ins
dépend de la
valeur de i
 Le bloc ins est
indépendant
de la valeur
de i
∑ci
n*c
Boucle while while condition :
ins
On note m, c1,
et c2
respectivement
le nombre de
boucles espéré,
le coût de la
condition et le
coût de ins
m*max(c1,c2)
b. Mesure de la complexité
Le calcul de coût d’une fonction renseigne sur le temps nécessaire à son
exécution, mais il suffit de changer de machine que la valeur change avec des
données identiques! D’où, il sera utile de construire une fonction qui décrit le
comportement de l’algorithme quand:
a. La taille…
b. Et le traitement…
Instruction Notation Formule de calcul du coût
Input, print,=,
opérations de
comparaisons,
opérations
arithmétiques, return,
break, continue
O(1)
Un bloc d’instruction
simple
I1
..
Ik
Complexité respective de
I1..Ik sont O(f1(n)),
O(f2(n)).. O(fk(n))
O(max(g(n),f1(n),f2(n)))
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Complexité 8
If condition:
i1
else:
i2
Complexités respective de
la condition, de i1 et de i2
sont données par : O(g(n)),
O(f1(n)) et O(f2(n))
O(max(g(n),f1(n),f2(n))
for I in range(N):
ins
Complexité de ins est note
O(f(n))
O(N*f(n))
while condition:
ins
La boucle se répète m fois
que la complexité de la
condition est O(g(n)) et la
complexité de l’instruction
O(f(n))
O(m*max(O(g(n),O(f(n)))
c. Classification des problèmes
Classe de complexité désignations Exemple de problèmes
O(1) Complexité constante: le
temps d’exécution
n’augmente pas avec
l’accroissement de la taille
des données
Affectation, calcul arithmétique,
comparaison, accès au premier
élément d’un ensemble de
données
O(log(n)) Complexité
logarithmique :
augmentation très faible
du temps d’exécution
quand la taille des
données s’accroit
Recherche dichotomique,
conversion d’un décimal en
binaire, couper un ensemble de
données en deux sous
ensembles
O(n) Complexité linéaire : le
temps d’exécution
s’accroit d’une manière
linéaire avec la taille des
données
Parcours d’une liste, Recherche
linéaire dans une liste
O(n log(n)) Complexité quasi-linéaire Couper un ensemble de
données en deux sous
ensembles d’une manière
répétitive et combiner les sous
ensembles pour obtenir la
solution finale ( les problèmes
diviser pour régner..)
O(n²) Complexité quadratique :
le temps de l’exécution
est le carré de la taille des
données
Double boucles imbriquées
O(n3) Complexité cubique : Trois boucles imbriquées
O(np) Complexité polynomiale P boucles imbriquées
[MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’
Mariem ZAOUALI | Application 9
O(2n)ou O(exp(n)) Complexité exponentielle Générer tous les sous-ensembles
possibles d’un sous ensemble
possible (Tours de Hanoi)
Application
Calculer le coût des méthodes de tris vu dans ce chapite.

Contenu connexe

Tendances

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancépierrepo
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage PythonAziz Darouichi
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage CMohamed Lahby
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French CourseHaytam EL YOUSSFI
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivitéSana Aroussi
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementborhen boukthir
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)salah fenni
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI Mansouri Khalifa
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptxLamissGhoul1
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018salah fenni
 
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
 

Tendances (20)

Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Les listes en Python
Les listes en PythonLes listes en Python
Les listes en Python
 
Chapitre1: Langage Python
Chapitre1: Langage PythonChapitre1: Langage Python
Chapitre1: Langage Python
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Python For Data Science - French Course
Python For Data Science - French CoursePython For Data Science - French Course
Python For Data Science - French Course
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Résumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrementRésumer sur les fichier et les enregistrement
Résumer sur les fichier et les enregistrement
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)Bac info 2000-2015 (Tunisie)
Bac info 2000-2015 (Tunisie)
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
 
FormationPython2019.pptx
FormationPython2019.pptxFormationPython2019.pptx
FormationPython2019.pptx
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 
Arbre et algorithme de recherche
Arbre et algorithme de rechercheArbre et algorithme de recherche
Arbre et algorithme de recherche
 
Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018Corrige exercices pascal_fenni_2018
Corrige exercices pascal_fenni_2018
 
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
 

Similaire à Chap5 La manipulation des iterables en python

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...RichardTerrat1
 
cours TRI selection insertion bublle sort
cours TRI selection insertion bublle sortcours TRI selection insertion bublle sort
cours TRI selection insertion bublle sortYounesOuladSayad1
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)Tunisie collège
 
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
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxbetalab
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de javaAmir Souissi
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de triYassine Anddam
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)DriNox NordisTe
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfMbarkiIsraa
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéSana REFAI
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Chaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptxChaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptxMohammedJaafari3
 

Similaire à Chap5 La manipulation des iterables en python (20)

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
Algorithmes récursifs : une introduction pragmatique pour un enseignement au ...
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
cours TRI selection insertion bublle sort
cours TRI selection insertion bublle sortcours TRI selection insertion bublle sort
cours TRI selection insertion bublle sort
 
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES  (2022-2023)
IMPLEMENTATION EN PYTHON DES CONVENTIONS ALGORITHMIQUES (2022-2023)
 
Mathématiques et Python
Mathématiques et PythonMathématiques et Python
Mathématiques et Python
 
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
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptx
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 
Chapitre 3 elements de base de java
Chapitre 3  elements de base de javaChapitre 3  elements de base de java
Chapitre 3 elements de base de java
 
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de trirécursivité algorithmique et complexité algorithmique et Les algorithmes de tri
récursivité algorithmique et complexité algorithmique et Les algorithmes de tri
 
Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)Algorithmique seconde (corrigés et commentaires)
Algorithmique seconde (corrigés et commentaires)
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
la complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicitéla complexité des algorithmes en toute simplicité
la complexité des algorithmes en toute simplicité
 
8 gl1
8 gl18 gl1
8 gl1
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Chaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptxChaitre 3 Fonctions logiques (1).pptx
Chaitre 3 Fonctions logiques (1).pptx
 

Plus de Mariem ZAOUALI

Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Mariem ZAOUALI
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à pythonMariem ZAOUALI
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliquesMariem ZAOUALI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jmsMariem ZAOUALI
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures repartiesMariem ZAOUALI
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaMariem ZAOUALI
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de baseMariem ZAOUALI
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursiveMariem ZAOUALI
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieMariem ZAOUALI
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieMariem ZAOUALI
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Mariem ZAOUALI
 

Plus de Mariem ZAOUALI (16)

Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers Chap6 Manipulation des fichiers
Chap6 Manipulation des fichiers
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Tp1 design patternappliques
Tp1 design patternappliquesTp1 design patternappliques
Tp1 design patternappliques
 
TP2 RMI
TP2 RMITP2 RMI
TP2 RMI
 
Cours 4 intergiciels orientes messages jms
Cours 4 intergiciels orientes messages  jmsCours 4 intergiciels orientes messages  jms
Cours 4 intergiciels orientes messages jms
 
Cours 2 les architectures reparties
Cours 2 les architectures repartiesCours 2 les architectures reparties
Cours 2 les architectures reparties
 
Cours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corbaCours 3 les objets distants rmi corba
Cours 3 les objets distants rmi corba
 
Cours 1 les principes de base
Cours 1 les principes de baseCours 1 les principes de base
Cours 1 les principes de base
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Comment retrouver la forme récursive
Comment retrouver la forme récursiveComment retrouver la forme récursive
Comment retrouver la forme récursive
 
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / TunisieCorrection TP4 Atelier C++ /GL2 INSAT / Tunisie
Correction TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / TunisieTP4 Atelier C++ /GL2 INSAT / Tunisie
TP4 Atelier C++ /GL2 INSAT / Tunisie
 
TP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / TunisieTP3 Atelier C++/ GL2 INSAT / Tunisie
TP3 Atelier C++/ GL2 INSAT / Tunisie
 
TP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / TunisieTP2 Atelier C++/ GL2 INSAT / Tunisie
TP2 Atelier C++/ GL2 INSAT / Tunisie
 
TP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / TunisieTP1 Atelier C++/ GL2 INSAT / Tunisie
TP1 Atelier C++/ GL2 INSAT / Tunisie
 
Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia Graduation Project Presentation _ INSAT Tunisia
Graduation Project Presentation _ INSAT Tunisia
 

Dernier

Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 

Dernier (11)

Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 

Chap5 La manipulation des iterables en python

  • 1. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 1 Chapitre 5 : Manipulation des itérables en python  Effectuer des opérations de recherche sur différents types de conteneurs  Manipuler les algorithmes de Tri  Savoir leur complexité algorithmique 1. Recherche dans un conteneur non trié et dans une séquence triée On a besoin de modifier la valeur d’un objet x par une nouvelle valeur y dans un conteneur C. Il faut avant tout voir si x appartient à C. Python permet de faire un tel traitement avec l’opérateur in ou l’opérateur not in. La réponse sera de type booléen : True ou False. Parfois, la réponse booléenne ne suffit pas ! On aura besoin de plus d’informations à savoir l’emplacement de la valeur x qu’on cherche. Ceci est assuré par C.index(x). On peut penser à d’autres situations plus élaborées si on veut chercher tous les éléments dans C ayant la même valeur que x. On rappelle que C.count(x) calcule le nombre d’occurrences de x dans C. Ces traitements diffèrent selon le conteneur :  Un conteneur à accès séquentiel : liste, chaîne ou tuple, ou à accès direct : ensemble ou dictionnaire  Trié : recherche guidée  Non trié : recherche aveugle a. Cas d’un conteneur non trié Problématique : C = est un conteneur non trié. On veut vérifier si x appartient à C. Rech1() effectue un parcours séquentiel de C. Elle itère sur les éléments de C et pas sur les indices. A chaque fois, on vérifie si i==x, dans ce cas, on retourne vrai et on quitte la fonction. Si tous les objets de C sont parcourus et on n’a jamais obtenu la valeur vrai pour la condition x==i, alors on est sûr que l’élément cherché n’existe pas. Exemple d’exécution : Remarque : La recherche séquentielle n’est pas adaptée aux dictionnaires.
  • 2. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 2 On propose maintenant une autre version de recherche basée sur les indices et non pas les objets. La détermination du résultat de la recherche est basée sur la valeur de i avec laquelle on quitte la boucle tant que. Si i atteint len(C), ceci veut dire qu’on a parcouru tout le conteneur C. On propose maintenant de trouver le premier x dans C. Pour ce faire, on propose la méthode Rech3. Si on ne trouve pas l’élément x, on retourne généralement un indice non existant (comme -1). Or Python utilise aussi un système d’indexation négatif. Ainsi, il vaut mieux retourner None. b. Cas d’une séquence triée On suppose maintenant que le conteneur C est trié d’une manière croissante. La recherche est guidée par la valeur de x : Solution 1 : Solution 2 : Quand le conteneur est trié, on peut penser à procéder par dichotomie en suivant les étapes suivantes :  On calcule le milieu m du conteneur  On compare C[m] à x : o Si C[m]=x : Trouvé !
  • 3. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 3 o Si C[m]>x : on continue la recherche dans la partition C[0 :m] o Si C[m]<c : on continue la recherche dans la partition C[m+1 :]  Ce principe est répété jusqu’à ce que le conteneur C ne contienne plus d’éléments Solution 3 : Traduisons cette version séquentielle/itérative de la recherche dichotomique en une version récursive c. Cas d’un dictionnaire La position d’une entrée dans un dictionnaire est calculée à partir de sa clé. Une fonction spéciale est utilisée pour ce faire, appelée fonction de hachage. Dans la littérature, on croise pas mal de fonctions de hachage, on va considérer une fonction qui se base sur les codes ascii des caractères constituants d’une clé.
  • 4. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 4 2. Les tris a. Tri par sélection Le principe :  Commencer à chercher l’indice du minimum de la liste L  Permuter le 1er élément de la liste avec l’élément minimum trouvé  Chercher l’indice du minimum des éléments de la sous liste L[1 :] et le permuter avec le deuxième élément  Continuer ce principe jusqu’à ce que la liste devienne triée o On échange l’élément à la position i avec le minimum de la sous liste L[i+1 :]. L’algorithme se termine au bout de n-1 boucles quand on a trouvé n-1 minimums successifs Le code : b. Tri par fusion Le principe : C’est un algorithme de tri basé sur le principe de « Diviser pour régner ». On subdivise la liste en deux sous listes de tailles presque égales, on trie en suite ces dernière puis on les fusionne pour obtenir une liste triée. L’algorithme utilise deux fonctions :
  • 5. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Chapitre 5 : Manipulation des itérables en python 5  Fonction fusion : Fusionne deux listes supposées triées en une seule. Par exemple, fusion([1,2,4],[2,3,8]) renvoie [1,2,2,3,4,8]. L’algorithme de la fusion procède comme suit : o Comparer les premiers éléments des deux sous listes o Ajouter le plus petit d’entre eux dans une liste résultat o Avancer dans la liste d’où est ce que l’élément a été pris o Si on termine tous les éléments d’une liste et qu’il reste encore des éléments dans la seconde, on effectue une copie des éléments restants directement  Fonction tri : C’est une fonction récursive. Elle consiste à : o Couper en deux la liste initiale o Trier par appels récursifs les deux sous listes o Fusionner les deux sous listes triées en utilisant la fonction fusion Le code : c. Tri rapide Le principe : C’est aussi un algorithme basé sur le paradigme « diviser pour régner » :  Diviser : Il s’agit de choisir deux sous listes A et B contenant respectivement les éléments de L qui sont inférieurs à p et ceux qui lui sont supérieurs ou égaux.  Régner : Le même principe est appliqué pour trier les sous-listes A et B, jusqu’à obtention de sous listes de tailles ≤ 1
  • 6. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Complexité 6  Combiner : Aucun effort de combinaison n’est nécessaire étant donné que les sous listes sont déjà triés Le code : 3. Complexité a. Calcul des coûts des fonctions Le calcul de coût consiste à déterminer le temps nécessaire à l’exécution des différentes instructions d’un programme en fonction de la taille des données. Les règles suivantes sont à prendre en considération : Instruction Désignation Notation Formule de calcul du coût Instruction simple input, print,=,opérations de comparaisons, (==, !=,<=,…), opérations aréthmétiques (+,,*,/,//,%,**), break, continue,return Nécessite une unité de temps à leur exécution 1 Structure conditionnelle If condition: i1 else: i2 On note C1,C2, C3 les temps d’exécutions respectifs nécessaires à la condition, i1 et i2 C1+max(C2,C3)
  • 7. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Complexité 7 Boucle for for i in range(N) : ins On note ci le temps d’exécution du bloc d’instruction ins. Deux cas se présentent :  Le bloc ins dépend de la valeur de i  Le bloc ins est indépendant de la valeur de i ∑ci n*c Boucle while while condition : ins On note m, c1, et c2 respectivement le nombre de boucles espéré, le coût de la condition et le coût de ins m*max(c1,c2) b. Mesure de la complexité Le calcul de coût d’une fonction renseigne sur le temps nécessaire à son exécution, mais il suffit de changer de machine que la valeur change avec des données identiques! D’où, il sera utile de construire une fonction qui décrit le comportement de l’algorithme quand: a. La taille… b. Et le traitement… Instruction Notation Formule de calcul du coût Input, print,=, opérations de comparaisons, opérations arithmétiques, return, break, continue O(1) Un bloc d’instruction simple I1 .. Ik Complexité respective de I1..Ik sont O(f1(n)), O(f2(n)).. O(fk(n)) O(max(g(n),f1(n),f2(n)))
  • 8. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Complexité 8 If condition: i1 else: i2 Complexités respective de la condition, de i1 et de i2 sont données par : O(g(n)), O(f1(n)) et O(f2(n)) O(max(g(n),f1(n),f2(n)) for I in range(N): ins Complexité de ins est note O(f(n)) O(N*f(n)) while condition: ins La boucle se répète m fois que la complexité de la condition est O(g(n)) et la complexité de l’instruction O(f(n)) O(m*max(O(g(n),O(f(n))) c. Classification des problèmes Classe de complexité désignations Exemple de problèmes O(1) Complexité constante: le temps d’exécution n’augmente pas avec l’accroissement de la taille des données Affectation, calcul arithmétique, comparaison, accès au premier élément d’un ensemble de données O(log(n)) Complexité logarithmique : augmentation très faible du temps d’exécution quand la taille des données s’accroit Recherche dichotomique, conversion d’un décimal en binaire, couper un ensemble de données en deux sous ensembles O(n) Complexité linéaire : le temps d’exécution s’accroit d’une manière linéaire avec la taille des données Parcours d’une liste, Recherche linéaire dans une liste O(n log(n)) Complexité quasi-linéaire Couper un ensemble de données en deux sous ensembles d’une manière répétitive et combiner les sous ensembles pour obtenir la solution finale ( les problèmes diviser pour régner..) O(n²) Complexité quadratique : le temps de l’exécution est le carré de la taille des données Double boucles imbriquées O(n3) Complexité cubique : Trois boucles imbriquées O(np) Complexité polynomiale P boucles imbriquées
  • 9. [MANIPULATION DES ITERABLES EN PYTHON] ESPRIMS’ Mariem ZAOUALI | Application 9 O(2n)ou O(exp(n)) Complexité exponentielle Générer tous les sous-ensembles possibles d’un sous ensemble possible (Tours de Hanoi) Application Calculer le coût des méthodes de tris vu dans ce chapite.