Les Méthodes des structures en Python
1. Noms de variables et mots réservés :
Un nom de variable ne peut pas être un mot réservé du langage :
and Assert break class continue def del elif else except
exec Finally for from global if import in is lambda
not Or pass print raise return try while yield
2. Les méthodes d’une liste
Une fois définie, une liste possède un ensemble de méthodes :
Méthode Action
[Link](x) Pour ajouter x à la fin de la liste liste.
[Link](liste2) Pour ajouter la liste liste2 à la suite de la liste liste.
[Link](i,x) Pour insérer l'élément x en position i dans liste.
[Link]() Pour retirer et renvoyer le dernier élément dans liste.
[Link](i) Pour retirer et renvoyer l'élément en position i dans liste.
[Link](x) Pour retirer la première occurrence de x dans liste.
[Link](x) Renvoie la 1re position de x dans liste. Message d'erreur si aucune.
[Link](x) Renvoie le nombre d'occurrences de x dans liste.
[Link]() Trie la liste par ordre croissant.
[Link]() Renverse l'ordre des éléments de la liste.
3. Les méthodes d’un ensemble :
Add : Ajouter un élément à l’ensemble
[Link] Page 1
Voici une liste de toutes les méthodes disponibles avec les ensemble.
Méthode Description
add(elem) Ajoute un élément à l'ensemble
clear() Supprime tous les éléments de l'ensemble
copy() Renvoie une copie de l'ensemble
difference() Différence en deux ensembles
discard() Supprime un élément de l'ensemble
intersection() Intersection de deux ensembles
isdisjoint() Renvoie True si deux ensembles ont une intersection nulle
issubset() sous-ensemble
issuperset() sur-ensemble
pop() Supprime et retourne un élément arbitraire de l'ensemble.
remove() Supprime un élément de l'ensemble.
symmetric_difference() différence symétrique de deux ensembles
union() union de deux ensemble
update() Met à jour l'ensemble
all() renvoie True si tous les éléments de l'ensemble sont vrais (ou si l'ensemble
est vide).
any() renvoie True si un élément de l'ensemble est vrai. Si l'ensemble est vide,
renvoie False.
enumerate() Renvoie un objet énumérer. Il contient l'indice et la valeur de tous les
éléments de l'ensemble sous forme de paire.
len() la taille
max() le maximum
min() le minimum d'un ensemble
sorted() Renvoie une nouvelle liste triée à partir des éléments de l'ensemble (ne
permet pas de trier l'ensemble lui-même)
sum() Somme de tous les éléments.
4. Les méthodes d’un tuple :
Le tuple ne contient que deux méthodes count et index.
Count(elem) : retourne le nombre d’occurrence de l’élément dans le tuple
Index(elem) : retourne la position (indice) de la première occurrence de l’élément dans le tuple
5. Les méthodes d’un dictionnaire
[Link] Page 2
[Link]() retourne la liste des clefs du dictionnaire d
[Link]() retourne la liste des valeurs du dictionnaire d
[Link]() retourne la liste des champs (key, value) de d
[Link]() retourne une copie du dictionnaire
d.has_key(cle) permet de savoir si un dictionnaire comprend une clé déterminée
[Link](cle) Supprime la cle et retourne sa valeur
[Link]() Supprime une cle et retourne le tuple (cle, valeur)
[Link]() permet d'effectuer une vraie copie d'un dictionnaire
Retourne la valeur de la cle passée en paramètre ou retourne val si la cle
[Link](cle,val)
n’existe pas
[Link](d2) concaténer les deux dictionnaires d et d2. ( les doublons se fusionnenet)
[Link](cle, Cree une nouvelle clé cle avec sa valeur val si la clé cle n’existe plus. Sinon la
val) méthode ne fait rien.
[Link]() Vide a dictionnaire
6. les méthodes d’une chaine de caractères
Une méthode est une fonction qu’on peut appliquer sur chaine :
Pour afficher les méthodes d’une chaine, il suffit d’écrire la chaine suivie d’un point.
L’exemple suivant montre les méthodes de la chaine S3 définie ci haut.
Méthode
Split() : découpe une chaine en une liste de S= ‘’Bonjour tout le monde ‘’
mots LS=[Link]() donne LS=[‘Bonjour’,’tout’,’l’ , ‘monde’]
Join(liste de chaines) : concatène une liste de >>> S1="-"
chaine en chaine unique >>> S="Bonjour Tout Le Monde"
>>> S3=[Link](S)
>>> print(S3) B-o-n-j-o-u-r- -T-o-u-t- -L-e- -M-o-n-d-e
>>> S4=[Link](['Bonjour','tout','le','monde'])
>>> print(S4) Bonjour-tout-le-monde
>>>S5= «’’ ‘’.join(['Bonjour','tout','le','monde'])
>>>print(S5) Bonjour tout le monde
Find(sous chaine) : donne la position d’une >>> f=[Link]('tout')
sous chaine dans une chaine >>> f donne -1 # la sous chaine n’existe pas
>>> f=[Link]('Tout') >>> print(f) donne 8
Count(sous chaine) : donne le nombre le >>> f=[Link]('tout')
nombre d’apparition d’une sous chaine dans >>> f donne 0 # la sous chaine n’existe pas
[Link] Page 3
une chaine >>> f=[Link]('Tout') >>> print(f) donne 1
Lower() : convertit une chaine en miniscule >>> print(S) donne Bonjour Tout Le Monde
>>> Sm=[Link]()
>>> print(Sm) bonjour tout le monde
upper() : convertit une chaine en mijuscule >>> Sm=[Link]()
>>> print(Sm) bonjour tout le monde
capitalize() : convertit le 1ere lettre d’une >>> SM=[Link]()
chaine en mijuscule. >>> print(SM) donne BONJOUR TOUT LE MONDE
title() : convertit tous les 1er lettres des mots >>> t=[Link]()
d’une chaine en mijuscule. >>> print(t) donne Bonjour Tout Le Monde
Swapcase() : intervertit les lettres majuscules >>> tt=[Link]()
et miniscules >>> print(tt) donne bONJOUR tOUT lE mONDE
Strip() : supprime les espaces blancs en début >>>ss=’’ bonjour tout le monde’’
en en fin de la chaine >>>sss=[Link]() donne ‘’bonjour tout le monde’’
Replace() : remplace une sous chaine par une >>> s1=[Link]('Tout Le Monde','la compagnie')
autre >>> print(s1) donne Bonjour la compagnie
Index(sous chaine) : retourne la position de la >>> S="Bonjour"
sous chaine dans une chaine >>> [Link]('j')
3
>>> [Link]('njour')
2
Center(nombre) : centrer la chaine sur >>> print([Link](40))
nombre caractères Bonjour
40 caractères
Format() : remplace un format dans une >>> s1="Voici {0}chaîne à {1} trous."
chaine >>>print(s1)
Voici {0}chaîne à {1} trous.
>>> print([Link]("une " , 2))
Voici une chaîne à 2 trous.
>>> print("a{0}cada{0}".format("bra"))
abracadabra
Les fonctions isupper() et islower() : Testent >>> print([Link]())
si une sous chaine est majuscule ou False
minuscule >>> print([Link]())
False
>>> print("BONJOUR".isupper())
True
1. Les tableaux numériques (Vecteurs et matrices)
Comme tout objet structure en python, un tableau, quelque soit en une seule (vecteurs) ou
plusieurs dimensions possède un ensemble de méthodes :
import numpy as np
Les tableaux et les matrices
— [Link](xi,xf,n) : tableau de n valeurs équidistantes comprises entre xi et xf (inclues)
— [Link](n) : tableau de n cases vides
— [Link](n) : tableau de n éléments remplis de 0
— [Link](n) : tableau de n éléments remplis de 1
— np..empty((nl, nc)) : matrice de nl lignes et nc colonnes ( cases vides)
— np..zeros((nl, nc)) : matrice de nl lignes et nc colonnes ( cases remplies de 0)
— [Link]((nl, nc)) : matrice de nl lignes et nc colonnes ( cases remplies de 1)
— [Link](n) : matrice identité de n lignes et n colonnes.
— [Link]([2,4,5,6,2]) : matrice carrée dont le diagonale est le vecteur [2,4,5,6,2]
[Link] Page 4
Supprimer des lignes et des colonnes
delete(a,k,axis=0) suppriment la k-ième ligne de la matrice a ( axis=0)
delete(a,k,axis=1) suppriment la k-ième colonne de a ( axis=1)
On peut également supprimer plusieurs colonnes (ou lignes) à la fois. Voici quelques exemples :
Produit matriciel - dot()
Un tableau peut jouer le rôle d’une matrice si on lui applique une opération de calcul matriciel. Par
exemple, la fonction dot() permet de réaliser le produit matriciel.
>>> T1 = array([[1, 2, 3],
[4, 5, 6]])
>>> T2 = array([[4],
[2],
[1]])
>>> dot(T1,T2) ou [Link](T2)
array([[11],
[Link] Page 5
[32]])
Le produit d’une matrice de taille n x m par une matrice m x p donne une matrice n x p.
Algèbre linéaire
Déterminant - det()
>>> a = array([[1, 2],
[3, 4]])
>>> [Link](a)
-2.0
Inverse - inv()
>>> a = array([[1, 3, 3],
[1, 4, 3],
[1, 3, 4]])
>>> [Link](a)
array([[ 7., -3., -3.],
[-1., 1., 0.],
[-1., 0., 1.]])
Valeurs propres et vecteurs propres - eig()
>>> A = array([[ 1, 1, -2 ], [-1, 2, 1], [0, 1, -1]])
>>> A
array([[ 1, 1, -2],
[-1, 2, 1],
[ 0, 1, -1]])
>>> D, V = [Link](A)
>>> D
array([ 2., 1., -1.])
>>> V
array([[ 3.01511345e-01, -8.01783726e-01, 7.07106781e-01],
[ 9.04534034e-01, -5.34522484e-01, -3.52543159e-16],
[ 3.01511345e-01, -2.67261242e-01, 7.07106781e-01]])
Les colonnes de V sont les vecteurs propres de A associés aux valeurs propres qui apparaissent dans D.
Matplotlib : Tracés en 2D et 3D avec Python
Matplotlib est probablement le package Python le plus utilisé pour la représentation de
graphiques scientifiques en 2D et en 3D.
Les options sont très nombreuses et nous n'en présenterons que quelques unes, les plus utiles.
Pour plus de détail, voir [Link]
Pour utiliser matplotlib, la façon la plus simple est d'importer le module pylab. De façon
simplifiée, ce module import à la fois matplotlib et numpy.
In [2]:from pylab import*
Mais on peut seulement importer le module [Link], traditionnelement sous le
nom plt (la façon la plus propre):
[Link] Page 6
In [3]:import [Link] as plt
Un graphique simple :
D’une manière générale les fonctions [Link] des vecteur/matrice, bref des tableaux
de points du plan. Selon les options, ces points du plan sont reliés entre eux de façon ordonnée
par des segments : le résultat est une courbe.
Commençons par la fonction sinus.
Import [Link] as plt
Import numpy as np
x=[Link](-5,5,100)
[Link](x,[Link](x)) # on utilise la fonction sinus de Numpy
[Link]('fonction sinus')
[Link]("x")
[Link]()
Il est possible de jouer avec les
menus dans le bas de cette fenêtre :
zoomer, déplacer la figure, etc et
surtout sauvegarder dans un format
PNG, PDF, EPS, etc.
Plusieurs courbes :
On peut bien sûr tracer plusieurs courbes sur un même graphique.
In [5]:
import [Link] as plt
import numpy as np
x=[Link](0, 2*pi, 30)
y1 =[Link](x)
y2 =[Link](x)
[Link](x, y1,label=’cos’)
[Link](x, y2,label=’sin’)
[Link](loc='upper center')
[Link]()#pour afficher la grille d’un graphe
[Link]()
On peut, pour chacune des courbes, préciser la couleur et lui affecter une légende.
[Link](x, y1, color='r', label ='cos')
[Link](x, y2, color='b', label ='sin')
[Link] Page 7
Matplotlib est fournie avec un jeu de paramètres par défaut qui permet de personnaliser toute
sorte de propriétés. Vous pouvez contrôler les réglages par défaut de (presque) toutes les
propriétés : taille du graphique, résolution en points par pouce (dpi), épaisseur du trait, couleurs,
styles, vues, repères, grilles, textes, polices de caractères, etc.
Ci-dessous, quelques exemples de réglages que l'on peut modifier:
In [7]:
import [Link] as plt
import numpy as np
# on crée un graphique de 8x6 pouces
# avec une résolution de 160 points par pouce
[Link](figsize=(8,6), dpi=160)
x =[Link](-[Link], [Link], 500)
C,S=[Link](X), [Link](X)
x2 =[Link](-[Link], [Link], 50)
C2 =[Link](2*X2)
# on trace la fonction cosinus en bleu avec un trait plein de 1,5 pixel
d'épaisseur et des tirets
[Link](X, C, color="blue", linewidth=1.5, linestyle="--", label ='cos(x)')
# on trace la fonction sinus en vert avec un trait plein de 3 pixels d'épaisseur
et des points-tirets
[Link](X, S, color="green", linewidth=3, linestyle="-.", label ='sin(x)')
# on trace la dernière fonction en rouge, avec des marqueurs
[Link](X2, C2, marker='o', color='red', linestyle='-', label ='cos(2x)')
# limites de l'axe (O,x) des abscisses
[Link](-4.0,4.0)
# graduations de l'axe (O,x) des abscisses avec du joli texte
[Link]([-[Link], -[Link]/2, 0, [Link]/2, [Link]],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
# limites de l'axe (O,y) des ordonnées
[Link](-1.0,1.0)
# graduations de l'axe (O,y) des ordonnées
[Link]([Link](-1,1,5))
# la légende, en haut à gauche
[Link](loc='upperleft')
# on enregistre le graphique avec une résolution de 72 points par pouce
# [Link]("[Link]",dpi=72)
# on affiche le résultat à l'écran
[Link]()
subplots
Un système de sous-figures permet de juxtaposer différents graphiques.
[Link] Page 8
Dans la commande [Link](a,b,c),les arguments sont a= nombre de lignes,
b=nombre de colonnes, et c=numéro de la figure (le nombre de lignes multiplié par le
nombre de colonnes devant être supérieur ou égal au nombre de figures). Ensuite matplotlib place
les figures au fur et à mesure dans le sens des lignes.
def f(t):
return [Link](-t)*[Link](2*[Link]*t)
t1 =[Link](0.0, 5.1, 0.1)
t2 =[Link](0.0, 5.02, 0.02)
[Link](1, figsize= (12,10))
[Link](2, 2, 1)
[Link](t1, f(t1), color='red', marker ='v', linestyle='None')
[Link](t2, f(t2), color='green')
[Link](2, 2, 2)
[Link](t2, [Link](2*[Link]*t2), 'r--')
[Link](2, 2, 3)
[Link](t2, [Link](2*[Link]*t2), 'b-')
[Link](2, 2, 4)
[Link](t2, [Link](2*[Link]*t2)+[Link](2*[Link]*t2), 'g')
[Link]()
Plusieurs graphiques
On peut tracer plusieurs graphiques sur des fenêtres séparées.
t=[Link](0,10,400) [Link](0, 10)
def U(t,Q): [Link]("$t \,(s)$", fontsize=16)
return [Link](-2/Q*t)*cos(2*pi*t) [Link](-1, 1)
[Link](1) [Link]("$U \,(V)$", fontsize=16)
[Link](t, U(t,2), label="$Q=2$") [Link]()
[Link]("Figure 1") [Link]()
[Link](2)
[Link](t, U(t,10), label="$Q=10$")
[Link] Page 9
Dans l'exemple ci-dessus,
dessus, les instructions données après le code [Link](2) ne seront
valables que pour celle-ci:
ci: les axes ne sont annotés, la légende n’est placée et les échelles ne sont
respectées que pour la figure 2.
[Link] en 3D en python
Import [Link] as plt
Import numpy as np
from mpl_toolkits.mplot3d import axes3d # Fonction pour la 3D
# Tableau pour les 3 axes
# Création d'un tableau de 100 points
#entre -4*pi et 4*pi
theta = [Link](-4*[Link],
4*[Link], 4*[Link], 100)
z=[Link](-2, 2, 100)
r= z**2 + 1
x = r * [Link](theta) #Création du tableau de l'axe x
y = r * [Link](theta) #Création du tableau de l'axe y
# Tracé du résultat en 3D
fig = [Link]()
ax =[Link](projection='3d')#Affichage en 3D
[Link](x, y, z, 'r',label='Courbe') # Tracé de la courbe 3D
[Link]("Courbe 3D")
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.tight_layout()
[Link]()
Quelques commandes et fonctions des bibliothèques numpy et scipy
scipy est une bibliothèque numérique1 d’algorithmes et de fonctions mathématiques, basée sur les tableaux
ndarray, complétant ou améliorant (en termes
terme de performances) les fonctionnalités de numpy.
Par exemple:
Functions spéciales : [Link]
special (fonctions de Bessel, erf, gamma, etc.)
Intégration numérique : [Link] (intégration numérique ou d’équations différentielles)
[Link] Page 10
Méthodes d’optimisation : [Link] (minimisation, moindres-carrés, zéros d’une fonction, etc.)
Interpolation : [Link] (interpolation, splines)
Transformées de Fourier : [Link]
Traitement du signal : [Link] (convolution, corrélation, filtrage, ondelettes, etc.)
Statistiques : [Link] (fonctions et distributions statistiques)
Traitement d’images multi-dimensionnelles : [Link]
Entrées/sorties : [Link]
Algèbre linéaire : [Link]
Exemple d’utilisation :
La fonction numpy :
Création et manipulation des tableaux numériques :
M1=[Link]([[1,2,4,5,0][1,0,2,3,7],[4,2,5,6,0]], dtype=int) : création d’une matrice de 3 lignes et 5
colonnes
T1=[Link](5) : création d’un tableau 1D (vecteur) de 5 cases vides
M2=[Link]((5,4)) : création d’un tableau 2D (matrice) de 20 cases vides ( 5 lignes, 4 colonnes)
T2=[Link] (5) : création d’un tableau de 5 cases remplies de 0.0
M3=[Link]((5,4)) : création d’un tableau 2D (matrice) de( 5 lignes, 4 colonnes) remplies de 0..
M4=[Link](5) création d’un tableau 2D (matrice) de 20 cases ( 5 lignes, 4 colonnes) remplies de 1.0.
M5=[Link](5) création d’une matrice identité de 25 cases ( 5 lignes, 5 colonnes)
[Link](A) numpy Transforme une matrice en tableau
[Link](A) numpy Transforme un tableau en matrice
[Link](A) [Link] Norme de la matrice A
[Link](A) numpy Transposée de la matrice A
Polynômes
poly1d([a .. d]) Représente le polynôme
poly1d([a..d],True)
Représente le polynôme
[Link] Degré du polynôme P
[Link], roots(p) Racines du polynôme P
[Link] Coefficients du polynôme P
p(x), polyval(p,x) Évalue le polynôme P au point x (selon le schéma de Horner)
L’algèbre linéaire :
- Calcul du déterminent : d=[Link](A)
- Les valeurs propres : v=[Link](A)
- Les valeurs et les vecteurs propres V,Ve=[Link](A))
- Résolution d’un système d’équation AX=B : sol=[Link](A,B)
La bibliothèque Scipy :
[Link] Page 11
Intégrer ou dériver une fonction
La bibliothèque [Link] : from [Link] import *
Pour intégrer une fonction, on utilise la commande quad(fonction, borne inférieure, borne supérieure)
Résolution d’une équation différentielle :
1. Du premier ordre : y’+ay=b
def f(y,t) : t=[Link](0,10, 200)# résolution sur l’intervalle [0 ..10]
return b-a*y y0= 0 # condition initiale puis sol=odeint(f,y0,t)
2
2. Du second ordre : y’’+(w0/Q).y ’+w0 .y=0
def f (syst, t):
y = syst[0] # Variable1 y
v = syst[1] # Variable2 v
dxdt = v # Equation différentielle 1
dvdt = -omega0/Q*v-omega0**2*x # Equation différentielle 2
return [dxdt,dvdt] # Dérivées des variables
Puis on écrit :
x0=1
v0=0
syst_CI=array([x0,v0]) # Tableau des Conditions initiales
Sols=odeint(deriv,syst_CI,t) # Résolution numérique des équations différentielles
# Récupération des solutions
x = Sols[:, 0]
v = Sols[:, 1]
La bibliothèque [Link] : from [Link] import *
Pour dériver une fonction, on utilise la commande derivative(fonction, x0, dx=1.0, n=1, args=(), order=3)
Racine(s) d’une équation
On recherche les zéros de la fonction f(x)=0
La bibliothèque [Link] : from [Link] import *
Sol= bisect(fonction,borne inférieure, borne supérieure)
Sol= newton (fonction, x_depart, derivee_de_la_fonction)
Résoudre un système d’équations
Pour résoudre un système d’équations, on utilise la commande fsolve(système, initialisation)
Exemple :
>>> from [Link] import fsolve
>>> def syst(var): # définition du système
x, y, z = var[0], var[1], var[2] # définition des variables
eq1 = x +10*y-3*z-5
eq2 = 2*x-y+2*z-2
eq3 = -x+y+z+3
res = [eq1, eq2, eq3]
return res
x0, y0, z0 = 0, 0, 0 #Initialisation de la recherche des solutions numériques
sol_ini = [x0, y0, z0]
>>> fsolve(syst, sol_ini)
array([ 2.000, -1.20797142e-17, -1.000])
[Link] Page 12