UE ALGORITHME ET PROGRAMMATION
ECUE LANGAGE
PYTHON &
ALGORITHMIQUE
Code PROG242302
Volume Horaire: 48H
4 ECTS
Dr Lambert KADJO
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr
1-PREMIER CONTACT AVEC PYTHON 1.1 Principales caractéristiques du
langage Python
Caractéristiques
Python est un langage de programmation impérative, structurée, orientée objet, de haut
niveau
Python étant ainsi appelé en référence à la troupe de comiques britanniques Monty
Python, le nom IDLE pourrait être une référence à Eric Idle, un membre fondateur de la
troupe.
Il présente les avantages suivants :
Sa syntaxe est très simple et concise : "on code ce que l'on pense".
Proche du 'langage algorithmique'.
Moderne. Très largement répandu dans l'industrie, l'enseignement et la recherche, notamment
pour ses applications scientifiques. Une large communauté participe à son développement.
Puissant, muni de nombreuses bibliothèques de fonctions. Dont de très bonnes bibliothèques
scientifiques.
Pratique pour travailler sur des objets mathématiques. Assez proche du langage mathématique.
Multi paradigmes, supportant les principaux styles de programmation : impératif, procédural,
orienté objet...
Multi plateformes : GNU/Linux, Mac OS X, Windows...
Libre et gratuit : logiciel Open Source (www.opensource.org) distribué sous la licence PSF (Python
Software Foundation) compatible avec la GPL (Gnu Public Licence).
Gratuit, disponible sur la plupart des plateformes (Windows, Mac, Linux, ...).
Python est dynamiquement typé.
DATA SCIENCE INSTITUTE/INP-HB 2019
Python est extensible : On peut l'interfacer avec d'autres langages (C, C++, Delphi, Java…)
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.1 Principales caractéristiques du
langage Python
Historique
1991 : Guido van Rossum travaille aux Pays-Bas sur le projet AMOEBA,
un système d’exploitation distribué. Il conçoit Python à partir du langage
ABC et publie la version 0.9.0 sur un forum Usenet
1996 : sortie de Numerical Python. Ce langage a été baptisé ainsi en hommage à la troupe
de comiques les « Monty Python ».
2001 : naissance de la PSF (Python Software Fundation). Les versions se succèdent. Un
grand choix de modules est disponible, des colloques annuels sont organisés, Python est
enseigné dans plusieurs universités et est utilisé en entreprise.
Fin 2008 : sorties simultanées de Python 2.6 et de Python 3.0
depuis 2013 : développement des branches 2 et 3 : v2.7.3 et v3.3.0
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Quelques implémentations
Plusieurs implémentations existent :
CPython : Classic Python, codé en C, implémentation portable sur différents systèmes.
Jython : ciblé pour la JVM (utilise le bytecode de JAVA)
IronPython : Python.NET, écrit en C#, utilise le MSIL (MicroSoft Intermediate Language)
Stackless Python: élimine l’utilisation de la pile du langage C
Pypy : projet de recherche européen d’un interpréteur Python écrit en Python
CPython : Classic Python, codé en C, portable sur différents systèmes
Python3000 : Python 3, la nouvelle implémentation de CPython
Unladen Swallow est un nouveau projet de Google utilisant les techniques de
compilation JIT de Java. Ce projet multipliera par 5 la vitesse d'exécution de Python.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Quelques implémentations
De nombreuses bibliothèques aident le développeur à travailler sur des projets particuliers.
Plusieurs bibliothèques peuvent ainsi être installées pour, par exemple :
développer des interfaces graphiques en Python.
écrire de petits programmes très simples, appelés scripts, chargés permettant
d’effectuer des tâches très précises sur l’ordinateur ;
écrire des programmes complets, comme des jeux, des suites bureautiques, des logiciels
multimédias, des clients de messagerie…
faire des projets très complexes, comme des progiciels (ensemble de plusieurs logiciels
pouvant fonctionner ensemble, principalement utilisés dans le monde professionnel).
De nombreux modules couvrant des domaines très variés :
numpy : algèbre linéaire, matrices, vecteurs, systèmes linéaires...
scipy : probalilité/statistiques, FFT 1D, 2D..., filtrage numérique, images ;
Matplotlib: tracé de courbes ;
os : manipulation des répertoires et des fichiers
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
DATA SCIENCE INSTITUTE/INP-HB 2019
http://statisticstimes.com/tech/top-computer-languages.php
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
DATA SCIENCE INSTITUTE/INP-HB 2019
http://statisticstimes.com/tech/top-computer-languages.php
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
TIOBE s’appuie sur une formule qui
évalue le nombre de fois que le
nom d’un langage spécifique est
recherché sur les moteurs de
recherche comme Yahoo, Google,
Wikipédia, Bing, Amazon, YouTube
et Baidu.
PYPL (PopularitY of Programming
Language Index) s’appuie sur une
formule qui évalue le nombre de
fois qu’un tutoriel sur un langage
spécifique est recherché sur Google,
en exploitant les données
provenant de Google Trends via le
mot-clé « tutoriel ». DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Python dans les cœurs
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Linux
Les éléments nécessaires sont :
une version de Python comme cités ci-dessus. Notez que les anciennes versions en 2.x sont
incompatibles avec les plus récentes en 3.x.
un éditeur de texte.
Cependant, on peut utiliser un environnement de développement intégré ou IDE (Integrated
DeveLopment Environment)
Anjuta ;
Spyder (Scientific PYthon Development EnviRonment) : multiplateforme , libre, orienté scientifique.
Eric Python IDE
Geany est un éditeur de texte léger utilisant GTK+ et Scintilla et incluant les fonctions élémentaires
d'un environnement de développement intégré
IDLE (Integrated DeveLopment Environment) : éditeur et interpréteur Python
Komodo Edit
Ninja-IDE
PIDA
PyCharm
Eclipse
PyScripter
Python Tools for Visual Studio
PythonAnywhere
SourceLair : pour la programmation en ligne dans le cloud.
Stani's Python Editor
DATA SCIENCE INSTITUTE/INP-HB 2019
Wing IDE
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Linux
Python est pré-installé sur la plupart des distributions Linux. Cependant, il est possible que
vous n'ayez pas la dernière version en date.
Pour le vérifier, tapez dans un terminal la commande python -V.
Cette commande renvoie la version de Python actuellement installée sur le système. Il
est très probable que ce soit une version 2.x, comme 2.6 ou 2.7, pour des raisons de
compatibilité.
Pour installer Python 3.x dont la syntaxe est très proche de Python 2.x mais diffère, il
faut :
.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Linux
2) Télécharger la dernière version de Python
(https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz)
3) depuis le dossier où se trouve l'archive , décompresser l'archive en tapant
4) Exécuter le script configure en tapant ./configure depuis l e dossier créé
5) enfin
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Linux
ou il suffit d’installer les paquets Python en fonction des besoins avec les outils disponibles
- avec l’installeur graphique (logithèque, muon, synaptic...),
- ou avec la ligne de commande (adept, apt-get, yum...) de votre distribution.
Paquets Python 2.7 (Ubuntu 12.04 Precise, Debian Wheezy...)
python2.7 python-numpy python-scipy python-matplotlib python-qt4
Paquets Python 3.x (Ubuntu 14.04 Trusty, Debian Jessie...)
python3 python3-numpy python3-scipy python3-matplotlib python3-pyqt4
Si, par exemple, vous avez installé Python 3.6, vous pouvez y accéder grâce à la commande :
Pour fermer la ligne de commande Python, n'utilisez pas CTRL + C mais CTRL + D ou exit().
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Linux
on pourrait aussi créer un environnement virtuel
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Windows
La distribution de base proposée sur Python.org n’inclut pas les modules numpy, scipy, etc.
Pour l’installation, on peut utiliser un logiciel installateur, qui se charge d’installer les nombreux modules
utiles au calcul scientifique ainsi que les IDE les plus connus (IDLE, Spyder...).
Installateurs libres
- Python scientifique:
Python(x,y) pour Python 2,
WinPython pour Python 2 et 3
Installateurs propriétaires / gratuits
- Continuum Analytics :
Anaconda pour Python 2 et 3,
Enthought Canopy pour Python 2)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Windows
Pour l’installation de modules sans installateur
1) Aller sur http://www.python.org/download
2) Sélectionner la version de Python que vous souhaitez utiliser.
3) On vous propose un (ou plusieurs) lien vers une version Windows : sélectionnez celle
convenant à votre processeur. Si vous avez un doute, téléchargez une version « x86 ».
4) Installer la version téléchargée.
5) Dans Démarrer >
Tous les programmes.
Python devrait apparaître
dans cette liste
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Windows
Pour l’installation de modules sans installateur
1) Aller sur https://www.anaconda.com/download/
2) Sélectionner la version de Python que vous souhaitez utiliser.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Installation de Python sous Windows
Pour l’installation de modules sans installateur
1) Aller sur https://www.anaconda.com/download/
2) Sélectionner la version de Python que vous souhaitez utiliser.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Technique de production de Python
Lorsqu’un programme source est fourni, Python commence par le compiler pour produire un
code intermédiaire (similaire à un langage machine) appelé bytecode, lequel sera ensuite
transmis à un interpréteur pour l'exécution finale.
Pour l'ordinateur, le bytecode est très facile à interpréter en langage machine. Cette
interprétation sera donc beaucoup plus rapide que celle d'un code source.
Les avantages de cette méthode sont :
L’interpréteur permet de tester immédiatement n'importe quel petit morceau de
programme permettant ainsi de vérifier le bon fonctionnement de chaque composant
d'une application au fur et à mesure de sa construction.
L'interprétation du bytecode compilé est très satisfaisante pour de très nombreux
programmes, y compris graphiques.
Le bytecode est portable. Pour qu'un programme Python puisse s'exécuter sur
différentes machines, il suffit de disposer d'un interpréteur adapté.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Technique de production de Python
Production d’un exécutable Python avec pyinstaller
https://pyinstaller.readthedocs.io/en/stable/usage.html
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Technique de production de Python
Production d’un exécutable Python
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Technique de production de Python
Production d’un exécutable Python Génération d’un
sous répertoire dist
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
L’éditeur: permet de rédiger des programmes;
La console permet de tester des commandes et renvoie les résultats des programmes
rédigés dans l’éditeur (autres onglets)
L’explorateur avec pour onglets :
L’inspecteur d’objets qui donne des informations sur l’utilisation des fonctions
activées
L’explorateur de variables qui donne la liste et les valeurs de toutes les variables qui
ont été crées
L’explorateur de fichiers qui donne accès au disque dur
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
Spyder est constitué de 3 fenêtres
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
L’interpréteur : C’est lui qui contient le triple chevron >>> qui est l’invite de Python
(prompt en anglais) et qui signifie que Python attend une commande.
ou d’autres interpréteurs tels
que celui de la console IPython.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
L’éditeur: On peut y écrire des scripts, c’est-à-dire des programmes petits ou grands.
Lors de la saisie, des propositions sont faites
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
1-PREMIER CONTACT AVEC PYTHON 1.2 Environnements matériels et logiciel
Utilisation d’un IDE: Spyder
L’Analyseur de Code: On peut y écrire des scripts, c’est-à-dire des programmes petits ou
grands.
analyse de code approfondie avec pylint ;
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON
PEP(Python Enhancement Proposal)
Homogénéïté de la bibliothèque standard
Lisibilité
Bonne pratique qui se propage
https://www.python.org/dev/peps/
Exemple: https://www.python.org/dev/peps/pep-0008/
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON
Le langage Python est constitué :
de mots clefs, qui correspondent à des instructions élémentaires (for, if...) ;
de littéraux : valeurs constantes de types variés (25, 1.e4, ’abc’...) ;
de types intrinsèques (int, float, list, str...) ;
d’opérateurs (=, +, *, /, %...) ;
de fonctions intrinsèques (Built-in Functions) qui complètent le langage.
L’utilisateur peut créer :
des classes : nouveaux types qui s’ajoutent aux types intrinsèques ;
des objets : entiers, flottants, chaînes, fonctions, programmes, modules..., instances de
classes définies par l’utilisateur ;
des expressions combinant identificateurs, opérateurs, fonctions, ..
NB: En Python, tout est objet, on accède à ces objets par leur référence. Cependant, on ne
manipule JAMAIS directement les références des objets: les noms de variables servent à
cela.
Lorsqu’un objet est créé, il hérite de toutes les méthodes de son type.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
Le nom est une suite quelconque de caractères alphanumériques (lettres alphabétiques
(majuscules ou non mais attention cela définit une variable différente), de chiffres
décimaux, de tiret bas.
Par exemple ces deux variables sont différentes
Par convention, on utilise uniquement des
minuscules pour désigner les variables
simples (ainsi que les noms de fonctions);
les majuscules sont réservées en
principe pour d'autres sortes de
variables, comme les noms de classe, les
constantes.
Pour des raisons de lisibilité, il est
également possible d'utiliser le tiret
bas _ dans les noms de variables. Par
exemple, on préféra age_moyen à
AgeMoyen. DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
NB :
Le premier caractère ne peut pas être un chiffre.
Il est, en théorie, possible de faire commencer un nom de variable par un tiret bas
comme premier caractère;
il est fortement déconseillé d'utiliser des noms de la forme __variable__ qui sont
réservés au langage.
Il n'est pas possible d'utiliser d'autres caractères que les caractères
alphanumériques et le tiret bas. Notamment le tiret haut - est interprété comme
l'opération de soustraction
En Python, les variables sont sensibles à la casse
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
Mots-clés:
Il existe en python certains mots spéciaux, qu'on appelle des mots-clés, ou keywords en
anglais, qui sont réservés et ne peuvent pas être utilisés comme un nom de variable.
La liste complète des 33 mots-clés est
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
Mots clefs du langage
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.1 Notion de variables
Noms de variables
Mots-clés du langage
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.2 Affectations
Affectations simples
Une affectation se fait en utilisant le signe =
On remarque au passage que, dans l’interpréteur interactif, taper juste age a le même effet
que print(age). Ce n’est pas le cas dans l’éditeur où l’on a besoin de la fonction print pour
afficher un résultat.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.2 Affectations
Affectations multiples
Python permet les affectations multiples:
Avec la notion de tuple
ou de liste, Python
permet aussi les
affectations parallèles:
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.2 Affectations
Opérateurs avec affectation
il existe des "opérateurs combinés" pour tous les opérateurs arithmétiques, pour
les opérateurs sur les chaînes de caractères, etc.
Opérateurs équivalence
x += y x=x+y
x -= y x=x-y
x *= y x=x*y
x /= y x=x/y
x //= y x = x // y
x **= y x = x ** y
x %= y x=x%y
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
Entrée standard (clavier)
Python dispose de deux instructions : input() et raw_input() pour pouvoir demander à
l’utilisateur de saisir une chaîne de caractères.
La lecture du clavier (entrée standard) est aussi simple que l'écriture à l'écran.
Toutefois, il faut savoir que python lit du clavier ligne par ligne. Il attend donc toujours
un retour de chariot ou un caractère de fin de fichier avant d'analyser le texte tapé.
raw_input() : "raw" en anglais veut dire "cru". La chaîne de caractères saisie va donc être
conservée comme une chaîne de caractères.
NB: Cette fonction utilisée par Python 2.7 a été renommée en input() par Python 3.x.
input() : cette fonction effectue toujours une saisie en mode texte
la valeur retournée est une chaîne, c’est-à-dire un type str dont on peut ensuite
changer le type (on dit aussi transtyper ou caster) avec int, float, etc.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
La fonction principale est print() qui permet d’afficher surtout des chaînes de caractères.
Elle se charge d’afficher la représentation textuelle des informations qui lui sont données
en paramètre, en plaçant un blanc séparateur entre deux informations, et en faisant un
retour à la ligne à la fin de l’affichage (le séparateur et la fin de ligne peuvent être
modifiés)
NB : Depuis la version 3 de Python, la commande print est considérée comme une
fonction dont il faut alors mettre les arguments entre parenthèses
La syntaxe est
print(valeur1, valeur2, …, valeurN, sep=‘ ‘, end=‘\n’, file=sys.stdout)
valeur1, valeur2, …, valeurN peuvent être des constantes ou des identificateurs de
variables associées à des références d’objets
- en python, le simple quote peut encadrer le double, et le double peut encadrer le
simple car la chaîne commence au premier guillemet et finit au même guillemet.
le séparateur par défaut (espace) peut être remplacé par un autre caractère
quelconque (ou même par aucun caractère), grâce à l'argument « sep »
le saut à la ligne terminal par défaut (nouvelle ligne) peut être remplacé par un autre
caractère quelconque grâceDATA à l'argument « end » 2019
SCIENCE INSTITUTE/INP-HB
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
On peut effectuer un formatage des chaînes de caractères avec la méthode str.format
Syntaxe: print("chaîne de formatage contenant des {...}".format(objet1, objet2, ...))
formats signification
.df d décimales, format flottant
.de d décimales, format scientifique
n.de n caractères avec d décimales, format scientifique
s chaîne de caractères
d entier en base 10
g choisit le format le plus approprié
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
On peut effectuer un formatage des chaînes de caractères avec la méthode str.format
Syntaxe: print("chaîne de formatage contenant des {...}".format(objet1, objet2, ...))
formats signification
.df d décimales, format flottant
.de d décimales, format scientifique
n.de n caractères avec d décimales, format scientifique
s chaîne de caractères
d entier en base 10
g choisit le format le plus approprié
Le formatage "à la printf du C" peut aussi se faire avec l’opérateur %
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
autres formatage avec str.format
nom et ville ne sont pas des variables, ce sont juste des mots clés
On peut également combiner position numérique et mots clés
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
autres formatage avec str.format
On peut préciser les tailles minimales des chaines de caractères, Cela insère une
chaine vide en début d’écriture si la taille est inférieure à celle fixée.
Valeur minimum de caractères
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
2- BASES DU LANGAGE PYTHON 2.3 Entrée/sortie standard
sortie standard (écran)
autres présentation de résultat avec repr() et rjust()
repr() pour afficher la valeur de la variable sous forme de chaine de caractères
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
PAUSE
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES
Typage dynamique en Python
le typage dynamique est une notion clé en Python
Le typage dynamique consiste à laisser l'ordinateur réaliser l’opération de typage « à la
volée », lors de l'exécution du code
le programmeur est donc déchargé de la tâche contraignante de déclarer expressément,
le type de chaque variable qu'il introduit dans son code.
le type des objets manipulés n'est pas forcément connu à l'avance
NB: Les variables n’ont pas de type mais référencent des objets en mémoire qui ont un type
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les types de données entiers
Le type int
Le type int n’est limité en taille que par la mémoire de la machine alors que dans la plupart
des autres langages , et même en python 2, les entiers int sont codés sur un nombre fixe de
bits et ont un domaine de définition limité. Par exemple, sur une machine 32-bits, la taille
d'un int sera de 32 bits.
L’entier peut être écrit simplement en décimal (2016), en binaire (0b11111100000), en octal
(0o3740), en hexadécimal (0x7e0)
Un entier écrit en base 10 (par exemple 2016) peut se représenter en binaire, octal et
hexadécimal en utilisant bin () pour la conversion binaire, oct() pour la conversion octal,
hex() pour la conversion hexadécimal
peut etre précédé du signe -
La fonction int() convertit un nombre d’une base B (défaut : 10) en base 10
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les types de données entiers
Le type bool
En Python, les valeurs des variables booléennes sont notées False et True. Les opérateurs
sont notés respectivement not, and et or.
Lorsque l'on saisit les conditions suivantes les valeurs retournées peuvent prendre 2
valeurs : True ou False. Elles sont de type booléen 'bool'
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les types de données entiers
Le type bool
Conversion en booléen : bool()
La fonction de conversion bool() convertit une valeur de n'importe quel type en un
booléen, selon les règles suivantes :
Un nombre 'int' ou 'float' est converti à True s'il est non nul, à False sinon.
Une chaîne de caractères 'str' est convertie à True si elle est non vide, à False si
c'est la chaîne vide : ""
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les types de données flottants
Le type float
Un float est noté avec un point décimal (pas avec une virgule) ou en notation exponentielle
avec un « e » symbolisant le « 10 puissance » suivi des chiffres de l’exposant (exemple
14.023e32).
Ils supportent les mêmes opérations que les entiers. Ils ont une précision finie limitée.
On peut accéder à ces valeurs minimales et maximales pour les flottants comme ceci
NB : L’import du module math autorise toutes les opérations mathématiques usuelles.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les types de données flottants
Le type complex
Les complexes sont écrits en notation cartésienne formée de deux flottants. La partie
imaginaire est suffixée par j. Par exemple
Un module mathématique spécifique (cmath) leur est réservé.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les données unicodes
Formes numérales
0 1 2 3 4 5 6 7 8 9 A B C D E F
215 ⅐ ⅑ ⅒ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ ⅟
216 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ Ⅼ Ⅽ Ⅾ Ⅿ
217 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⅺ ⅻ ⅼ ⅽ ⅾ ⅿ
Exposants et indices
0 1 2 3 4 5 6 7 8 9 A B C D E F
207 ⁰ ⁱ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ
208 ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎
209 ₐ ₑ ₒ ₓ ₔ DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Les données unicodes
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Opérateurs arithmétiques
Dans le tableau ci-après, sont présentés les symboles utilisés pour les opérations de base.
Opérations Symboles Exemples
Addition + 2 + 5 donne 7
Soustraction - 8 - 2 donne 6
Multiplication * 6 * 7 donne 42
Exponentiation (puissance) ** 5 ** 3 donne 125
Division / 7 / 2 donne 3.5
Reste de division entière % 7 % 3 donne 1
Quotient de division entière // 7 // 3 donne 2
décalage à gauche << 3 << 1 donne 6
décalage à droite >> 3 >> 1 donne 1
NB : Pour la branche 2. de Python, la division de deux entiers se fera comme la division entière.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Opérateurs de comparaison et opérateurs logiques
Opérateurs de comparaison: soit a= 5 et b=8
Opérations Opérateurs Exemples
inférieur strictement à < a <b donne VRAI
inférieur ou égal à <= a <= b donne VRAI
supérieur strictement à > a > b donne FAUX
supérieur ou égal à >= a >= b donne FAUX
égal à == a == b donne FAUX
différent de != a != b donne VRAI
En général, deux objets de types différents ne peuvent pas être égaux
Par contre, des float, des int et des long peuvent être égaux entre eux.
Opérateurs logiques
Opérations Opérateurs Autres opérateurs
ET and
Opérations Opérateurs
OU or
même identité ? is
négation not
identité différente ? is not
ET bit à bit &
appartient à ? in
XOR bit à bit ˆ
n’appartient pas à ? not in
OR bit à bit |
complément à 2 ~DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
On utilise les guillemets ou les simples côtes pour former les chaines sur une seule ligne,
triple guillemet pour les chaines sur plusieurs lignes.
Pour afficher une chaîne de caractères, il faut utiliser la fonction print.
NB : la chaîne de caractères vide s’écrit "" ou ''
Pour prendre en compte le retour chariot, on utilise le triple quote (tres utile pour la
documentation)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Chaînes de caractères
Méthodes : ce type d’objet possède une quarantaine de méthodes:
casser, recoller, remplacer
split(seps[, maxsplit]) : découpe la chaîne en maxsplit morceaux pour constituer une liste de
sous-chaînes. On peut choisir le caractère séparateur (seps) en le fournissant comme
argument, sinon c'est un espace par défaut.
rsplit() effectue la même chose que split en commençant par la fin
join(liste) : rassemble une liste de chaînes en une seule (inverse de split()), la chaîne à laquelle
on applique cette méthode est celle qui servira de séparateur (un ou plusieurs caractères)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
Chaînes de caractères
Méthodes : ce type d’objet possède une quarantaine de méthodes:
Rechercher, compter
find(sub[, start[, stop]]) : renvoie l'indice de la chaîne sub dans la sous-chaîne de
start à stop, sinon renvoie -1
rfind() effectue le même travail que find en commençant par la fin.
index(car) et rindex(car) (font de même que find mais produisent une erreur (exception) si
la chaîne n'est pas trouvée) : retrouve l'indice (index) de la première occurrence du
caractère car dans
la chaîne
count(sch) :
compte le nombre
de sous-chaînes
sch dans la chaîne
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
Méthodes
Majuscule, minuscule
lower() : convertit une chaîne en minuscules
upper() : convertit une chaîne en majuscules
capitalize() : Convertit en majuscule seulement la première lettre de la chaîne
title() : convertit en majuscule l'initiale de chaque mot
swapcase() : convertit toutes les majuscules en minuscules, et vice-versa
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
Méthodes
Remplacer, supprimer
replace(old[, new[, count]]) : remplace count instances (toutes pas défaut) de old par new
strip([chars]), lstrip([chars]) et rstrip([chars]) : suppriment toutes les combinaisons
de chars (ou l'espace par défaut) respectivement au début et en fin, au début, ou en fin d'une
chaîne;
striplines() effectue ce travail de strip avec les caractères de fin de ligne.
expandtabs([tabsize]) : remplace les tabulations par tabsize espaces (8 par défaut).
zfill(width) : complète la chaine à gauche avec des 0 jusqu'à une longueur maximale de width
center(width[, fillchar]), ljust(width[, fillchar]) et rjust(width[, fillchar]) : retournent
respectivement une chaîne centrée, justifiée à gauche ou à droite, de largeur maximale fixée
par le paramètre width complétée par le caractère fillchar (ou par l'espace par défaut)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
Méthodes
True ou False
isupper() et islower() : retournent True si la chaine ne contient respectivement que des
majuscules/minuscules
istitle() : retourne True si seule la première lettre de chaque mot de la chaine est en majuscule
isalnum(), isalpha(), isdigit(), isnumeric et isspace() : retournent True si la chaine ne contient
respectivement que des caractères alphanumériques, alphabétiques, numériques, numériques(en
format unicode) ou des espaces.
startswith(prefix[, start[, stop]]) et endswith(suffix[, start[, stop]]) testent si la sous-chaîne définie
par start et stop commence respectivement par prefix ou finit par suffix
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
Opérations et fonctions de base:
len(ch) : renvoie la ongueur de la chaine ch
float(ch) (resp. int(ch) convertit la chaîne ch en un nombre réel (resp. en entier)
Concaténation de chaines avec + (exemple : var_chaine1 + var_chaine2)
Répétition d’une chaine avec * (exemple : var_chaine * 3)
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.1 Les types de données simples
les chaînes de caractères : « str »
Formatage
On peut effectuer un formatage des chaînes de caractères avec la méthode str.format
Syntaxe: "chaîne de formatage contenant des {}".format(objet1, objet2, ...))
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Définition et création
C’est une séquence d’objets
c'est un objet de type list permet de collecter des éléments de types hétérogènes :
données de type quelconque : int, float, str, bool, etc., ou d'autres listes.
ce sont des objets mutables (on peut modifier directement dans la mémoire)
Les éléments d'une liste sont des valeurs de différents types, celles qu'on lui a affectées.
la liste ne stocke que les références aux objets
Une liste est créée à l'aide d'une affectation.
Ses éléments sont entre crochets [.], séparés par des virgules.
Les éléments d'une liste s'obtiennent grâce à leur indice entre crochets.
La numérotation des éléments de la liste commence à 0.
L'indice -1 permet d'obtenir le dernier élément.
C'est plus simple que liste[len(liste) - 1]. L'indice -2 l'avant-dernier, etc...
Un indice qui n'est pas compris entre -len(liste) et len(liste)-1 produit une erreur 'IndexError'
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Création
Création de
liste vide
Une liste de listes permet de
constituer un tableau bi-
dimensionnel, tri-dimensionel, etc
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Accès aux données d’une liste
Ici, le premier élément est
une liste, On peut donc
récupérer le 2ème élément
de cette liste interne
Ici, le dernier élément est
une liste, On peut donc
récupérer le dernier
élément de cette liste
interne
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Création
Les listes sont des objets modifiables (on dit aussi mutables) : on peut modifier leurs
éléments.
On modifie un élément de la liste en lui affectant une nouvelle valeur (de n'importe quel
type, simple ou complexe).
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Création d’une liste avec la fonction range()
La fonction range() permet d’obtenir des listes toutes faites.
permet d’obtenir une classe représentant une séquence d’entiers.
Avec un argument entier n, range(n) retourne la liste des n premiers entiers
Avec deux arguments entiers m,n, range(m,n) retourne la liste des max(0; n − m) en ers
consécutifs qui sont m ⩽ . < n.
Avec trois arguments entiers m, k, n, range(m, n, k)
retourne la liste des entiers de la forme m+k*p, avec
p entiers naturels, qui sont compris entre
DATA SCIENCE m (inclus) et
INSTITUTE/INP-HB n (exclus).
2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Méthodes
La méthode liste.sort() On peut vouloir ordonner une liste de nombres dans l’ordre croissant
La méthode liste.append(.) permet d’ajouter un objet fourni en argument à la liste, dans le sens
d’agrandir la liste d’un élément.
La méthode liste.extend(itérable) permet d’étendre la liste avec l’itérable en argument
La méthode liste.pop(index) permet de supprimer l’élément d’indice index et de retourner cet
élément. Si l’index est omis, c’est le dernier élément qui est retourné.
La méthode liste.clear() permet d’effacer tous les éléments de la liste.
La méthode liste.insert(index, objet) permet d’insérer objet avant l’élément d’indice index.
La méthode liste.count(valeur) retourne le nombre d’occurrence de valeur
La méthode liste.index(valeur) retourne l’indice de la première occurrence de valeur si valeur
existe dans la liste
Fonctions
La fonction len(liste) prend en argument une liste et retourne son nombre d‘éléments: longueur
de la liste fournie en argument.
la fonction sum(liste) prend en argument une liste et retourne, lorsque c'est possible, le résultat
de l'opération '+' sur ses éléments;
sorted(liste,reverse=False):
La fonction type(maliste) donne le type de la variable maliste.
La fonction zip(liste1, liste2, …) fournit un itérable combinant deux ou plusieurs listes en liste de
tuples DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Méthodes
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Sous-liste
(slicing)
Soit L = [10, 11, 12, 13, 14], une liste
liste1 = L[i:j] crée une nouvelle liste liste1, sous-liste de
L, dont les éléments sont ceux de L allant de l'indice i
inclus à l'indice j exclus.
On l'appelle une tranche (slice en anglais) de la liste.
Les indices entre crochets peuvent sortir de la plage
d'indice de la liste : par exemple:
liste2 = L[0:100] # tranche des indices de 0 à 100
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Sous-liste
(slicing)
Soit L = [10, 11, 12, 13, 14], une liste
liste1 = L[i:j:k] crée une nouvelle liste liste1, sous-liste
de L, dont les éléments sont ceux de L allant de l'indice
i inclus à l'indice j exclus et de pas k.
Si i et j non précisés, alors
si Pas > 0 : indice départ = 0 ; indice arrivée = len(L)
si Pas < 0 : indice départ = len(L)-1 : indice arrivée =-len(L)- 1
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Sous-liste (slicing)
Soit L1 = [10, 11, 12, 13, 14], une liste et L2
L1[i:j] = L2 modifie la liste L1 en remplaçant la section L1[i:j] de L1 par les éléments de L2
Extension de la liste avec
écrasement
Extension de la liste sans
écrasement
Effacement d’éléments
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Une liste en python ne contient que l'adresse mémoire où sont stockés ses éléments:
une belle illustration de pointeur.
Il faut donc prendre garde à la façon dont python copie une liste
Exemple 1:
Soient L, une liste et L_prim, une copie de L
Objet en mémoire
L et L_prim sont en effet des
10 11 12 13 14 alias, des étiquettes du même
objet [10, 11, 12, 13, 14].
Objet modifié en mémoire
Donc, effectuer une opération
10 11 12 13 14 15 sur L revient à effectuer une
opération sur L_prim, puisque
dans les deux cas, on effectue
l'opération sur
l’objet [10, 11, 12, 13, 14]
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Comment faire une copie avec des emplacements mémoires différents?
Exemple 2: Utilisation de la fonction list(). Soient L, une liste et L_prim, une copie de L
Objet en mémoire
10 11 12 13 14 L et L_prim pointent sur
deux objets différents mais de
Objet en mémoire mêmes contenus
10 11 12 13 14
Objet modifié en mémoire
10 11 12 13 14 15 Donc, effectuer une
Objet en mémoire opération sur L ne
peut en aucun cas,
10 11 12 13 14 affecter L_prim si L ne
contient que des
objets de types
simples
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Comment faire une copie avec des emplacements mémoires différents?
Exemple 2: Utilisation de la fonction list(). Ne marche pas si la liste contient d’autres listes
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Comment faire une copie avec des emplacements mémoires différents?
Exemple 3: Utilisation de la fonction copy() du module copy.
Objet en mémoire
10 11 12 13 14 L et L_prim pointent sur
deux objets différents mais de
Objet en mémoire mêmes contenus
10 11 12 13 14
Objet modifié en mémoire
10 11 12 13 14 15 Donc, effectuer une
Objet en mémoire opération sur L ne
peut en aucun cas,
10 11 12 13 14 affecter L_prim
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Comment faire une copie avec des emplacements mémoires différents?
Exemple 4: Utilisation de L[:].
Objet en mémoire
10 11 12 13 14 L et L_prim pointent sur
deux objets différents mais de
Objet en mémoire mêmes contenus
10 11 12 13 14
Objet modifié en mémoire
10 11 12 13 14 15 Donc, effectuer une
Objet en mémoire opération sur L ne
peut en aucun cas,
10 11 12 13 14 affecter L_prim
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les
listes : Copie de listes
Comment faire une copie de
liste de listes avec des
emplacements mémoires
différents?
Utilisation de la fonction
deepcopy() du module copy
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
Les listes et les opérations et méthodes associées
Opération sur les listes : Copie de listes
Ça
marche
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
Les types list (listes) et str (chaines de caractère) sont des structures de données de
type séquentielles alors que int, float, bool sont des types scalaires.
Tous les objets de type séquentiel ont en commun les opérations ci-dessous:
Opérations Significations
s[i] élément d'indice i de s, avec i un entier
min(s) plus petit élément de s
max(s) Plus grand élément de s
s[i:j] Tranche de i (inclus) à j (exclus), avec i, j sont des entiers
s[i:j:k] Tranche de i à j par pas de k, avec i, j, k sont des entiers
len(s) Longueur de s
x in s True si x est dans s, False sinon
x not in s True si x n'est pas dans s, False sinon
s+t Concaténation de s et t, où s et t sont des objets séquentiels de même type.
s*n, n*s Concatenation de n copies de s, avec n, un entier
s.index(x) Indice de la 1ere occurrence de x dans s
s.count(x) Nombre d'occurrences de xINSTITUTE/INP-HB
DATA SCIENCE dans s 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
Cependant, les chaines de caractères ne sont pas des objets modifiables.
Ainsi changer un élément produit une erreur TypeError :
Pour modifier, il faut créer
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr Dr Lambert KADJO ****** 2014-2015
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
Cependant, les chaines de caractères ne sont pas des objets modifiables.
en procédant ainsi, la variable conserve son nom, mais change d’identifiant donc pas le
même objet
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr Dr Lambert KADJO ****** 2014-2015
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
En français t-uplet. Ce sont des objets séquentiels.
On les définit par la liste de leurs éléments (comme pour une liste mais) entre parenthèses .
un tuple est une collection d'éléments séparés par des virgules.
contrairement aux listes, les tuples sont des objets non-modifiables (non-mutables)
Les parenthèses sont optionnelles
il faut toujours au moins une virgule pour définir un tuple: il est conseillé de toujours mentionner
une virgule terminale lorsqu'on construit des tuples
les parenthèses sont obligatoires lors d’une comparaison
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
Construire des tuples à partir de somme de tuples
L’addition de deux tuples donne un nouveau tuple qui est la concaténation des deux tuples opérandes.
Construire des tuples à partir d’une liste avec la fonction tuple()
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les tuples : « tuple »
Séquence unpacking
Permet d’assigner à une liste de variables, les valeurs du tuple (ou de la liste) suivant l’ordre choisi
Echange
NB: les contraintes fixées :
le terme à droite du signe = est un iterable (tuple, list, str, etc.),
le terme à gauche soit écrit comme un tuple (généralement) ou une liste,
DATA SCIENCE INSTITUTE/INP-HB 2019
les deux termes ont la même longueur Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Ce sont des structures de données qui ne sont pas séquentielles (non ordonnées)
un élément n'est plus repéré à l’aide d'un indice (un nombre entier) mais à l'aide d'un
nom constituant sa clef.
cette clé pourra être alphabétique, numérique ou fonctions, éléments d’une classe, etc.
(mais pas une liste python sauf sous certaines conditions). Les clés peuvent être de
presque n’importe quel type : entiers,
les éléments mémorisés dans un dictionnaire peuvent être de n’importe quel type (des
nombres, des chaînes, des listes, des tuples, des dictionnaires, et même aussi des
fonctions)
Cette structure de donnée s'appelle en python un dictionnaire et dans d'autres langages
un enregistrement.
NB: Les crochets délimitent les listes, les parenthèses délimitent les tuples et les accolades
délimitent les dictionnaires.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Création d’un dictionnaire
un dictionnaire apparaît dans la syntaxe Python sous la forme d’une série d’éléments
séparés par des virgules, le tout étant enfermé entre deux accolades. Chacun de ces
éléments est lui-même constitué d’une paire d’objets : un index (la clé) et une valeur,
séparés par un double point: on parle de la paire clé-valeur.
Créons ce dictionnaire
Cote_d_Ivoire = {'Capitale' : ‘Yamoussoukro', 'Superficie' : 322462, 'Population' : 25000000, 'Langue' : 'Français‘}
Création d’un dictionnaire vide
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Manipulation d’un dictionnaire
Accès à un élément se fait à l'aide de sa clef
L'accès à un élément se fait à l'aide de sa clef
Ajout d’un élément dans un dictionnaire
Pour ajouter de nouveaux éléments à un dictionnaire, il suffit de créer une nouvelle paire
clé-valeur.
Suppression d’un élément d’un dictionnaire
Pour supprimer un élément d’un dictionnaire, il suffit d’utiliser l’instruction intégrée del().
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Manipulation d’un dictionnaire
La taille d’un dictionnaire
différentes méthodes sur les dictionnaires
Cote_d_Ivoire.keys() : renvoie la séquence des clés utilisées dans le dictionnaire Cote_d_Ivoire.
Cette séquence peut être utilisée telle quelle dans les expressions, ou convertie en liste ou en tuple
si nécessaire, avec les fonctions intégrées correspondantes list()et tuple() :
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Manipulation d’un dictionnaire
Différentes méthodes sur les dictionnaires
Cote_d_Ivoire.values() : retourne la liste des valeurs du dictionnaire Cote_d_Ivoire
Cote_d_Ivoire.items() retourne la liste des champs (key,value) de Cote_d_Ivoire
Cote_d_Ivoire.copy() retourne une copie du dictionnaire telle que vue avec les listes.
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les dictionnaires : « dict »
Manipulation d’un dictionnaire
liste et tuple en dictionnaire et inversement
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les ensembles: « set »
Un set est un ensemble, c’est-à-dire une collection non ordonnée d’éléments uniques
immuables
On crée un objet de type set en lui passant en paramètre une liste d'éléments qui sont
dans l'ensemble.
Pour créer un set
Méthodes
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les ensembles: « set »
Méthodes et fonctions built-in
ens1.add(valeur) : ajoute valeur au set ens1
ens1.remove(valeur) : enlève valeur du set ens1
ens1.update(liste1) : ajoute chaque élément de la liste liste1 au set ens1. C’est
l’équivalent de extend du type list.
ens2 =frozenset(ens1): crée un ensemble immuable appelé ens2 à partir de ens1
Opérations
des opérations d’appartenance avec in
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les ensembles: « set »
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les ensembles: « set »
Test d’Inclusion
Union de deux ensembles
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.2 Les types évolués
les ensembles: « set »
intersection
Différence
Différence symétrique
Transformer un ensemble en liste
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Définition et illustration1
On parle de référence partagée, lorsqu’au moins 2 variables référencent le même
objet.
cela ne cause aucun problème lorsque l’objet est immuable
lorsque l’objet référencé est un mutable, il y a ce que l’on appelle effet de bord
Variables Objet
1
21
temp int
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration 1
Variables Objet
0
21
temp int
1
'data sce'
str
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration1
Variables Objet
temp
2
'data sce'
ecole str
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration2
Variables Objet
2
21
temp int
ecole
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration2
Variables Objet
1
21
temp int
1
'data sce'
ecole str
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
ecole
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
illustration3
Variables Objet
21 'data sce'
temp
[ . , .]
ecole
'master'
ecole voit le même
objet que temp
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: shallow copy
Variables Objet
21 'data sce'
temp
[ . , .] [ . , .]
ecole
Copie de premier niveau
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: shallow copy
Variables Objet
21 'data sce'
temp
[ . , .] [ . , .]
ecole
'master'
Copie de premier niveau
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: shallow copy
Variables Objet
21 [.] 'data sce'
temp
[ . , .] [ . , .]
ecole
Copie de premier niveau
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: shallow copy
Variables Objet
21 [.] 'data sce'
temp
[ . , .] [ . , .]
ecole
'master'
Copie de premier niveau
Effet de bord
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: deepcopy
Variables Objet
21 [.] 'data sce'
temp
[ . , .] [ . , .]
ecole
[.]
Copie en profondeur avec deepcopy
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
3- TYPES DE BASE ET RÉFÉRENCES PARTAGÉES 3.3Références partagées
Illustration4: deepcopy
Variables Objet
21 [.] 'data sce'
temp
'master'
[ . , .] [ . , .]
ecole
[.]
Copie en profondeur avec deepcopy
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
FIN
BLOC1
DATA SCIENCE INSTITUTE/INP-HB 2019
Dr Lambert KADJO
www.kadjo-lambert.c4.fr