Cours - Python Brahim Bakkas Structures
Cours - Python Brahim Bakkas Structures
Cours et exercices
Liste
Programmation sous Python
MPSI/PCSI
2022-2023 dictionnaire ensembles
Python
Brahim BAKKAS
Chaines de
tuple
caractères
Les variables, telles que nous les avons vues, ne permettent de stocker qu'une Un tableau est un ensemble de cases (espace mémoire).
seule donnée à la fois. Or, pour de nombreuses données, comme cela est La taille de chacune des cases est conditionnée par le type de donnée que
souvent le cas, des variables distinctes seraient beaucoup trop lourdes à gérer. contient cette case.
Heureusement, tous les langages proposent des structures de données
permettant de stocker l'ensemble de ces données dans une «variable commune». Voici donc une manière de représenter un tableau (liste):
Ainsi, pour accéder à ces valeurs il suffit de parcourir la variable en utilisant les
indices.
Un tableau est une structure référencée par un seul nom et qui est composée de Data Data Data Data Data Data Data Data
plusieurs données stockées de manière contiguë en mémoire (les unes à la suite
0 1 2 3 4 5 6 7
des autres).
L = [ 2.5 , False, "Meknes" , 50] # Pour déclarer une liste de quatre données -1.
# de types différents
Exemple 1: multiplier le contenu Exemple 2: somme des éléments Ci-dessous des fonctions qui manipule les listes sous python:
sum(liste)
>>>L= [8, 1, 6, 9, 2] Les listes sont des objets ( notion à étudier dans un
len
>>>L= [8, 1, 6, 9, 2] >>> len(L) cours plus loin)
>>> sum(L) 5
26
Les listes ont des méthodes très utiles qui facilite leurs
sum Fonctions max
La méthode copy
Méthode Description exemple modifier sans toucher la premier liste.
>>> A=[1,2,3,4,5] La méthode clear permet de vider une liste, elle retourne une liste vide []
dans la liste >>> [Link]()
[Link]() >>> A Méthode Description Exemple
[5, 4, 3, 2, 1]
[Link]() Trie la liste dans un ordre: >>>A=[1,2,3]
>>> A = [2,6,1,9] Permet Liste
>>>B=[Link]()
- Croissant par défaut >>> [Link]() [Link]()
>>>B
[Link](reverse=False) (reverse=False) >>> A Liste de départ
[1,2,3]
- Décroissant (reverse=True) [1, 2, 6, 9]
>>>[Link](reverse=False)
[Link](reverse=True) >>> A=[1,2,3]
>>> A [1, 2, 6, 9]
élémént de la liste >>> [Link]()
>>>[Link](reverse=True) [Link]()
Liste, elle retourne une liste vide [] >>> A
>>> A [9, 6, 2, 1] []
Listes Listes
La méthode count permet de Méthode .count : permet de compter le nombre d'occurrences d'un objet Python dans
La méthode index permet de une une liste, Il renvoie une valeur entière.
Méthode Description Exemple
>>>A=[1,2,3,2,4,2,5,1,2,6]
>>>A=[1,2,3,2,4,2,5,1,2,6]
>>>[Link](2) >>>[Link](2)
Permet de compter le nombre de
[Link](x) x dans la liste
3 # 2 existe 3 fois dans A 3
Liste. >>>[Link](9) >>>[Link](6)
1
>>>A=[1,2,3,2,4,2,5,1,2,6] >>>[Link](1)
Permet >>>[Link](2)
Liste sinon une 1 2
Liste. index(x, start=0) >>>[Link](2, 4) >>>[Link](7)
0. 5
ValueError: x is not in list >>>>>>[Link](8) 0
ValueError: 8 is not in list
Brahim BAKKAS Langage Python 19 Brahim BAKKAS Langage Python 20
Listes Listes
Listes Listes
Tuples
tuple
Les Tuples en Python sont comme une liste. Il peut contenir une séquence d'éléments. La
différence est qu'elle est immuable. Un tuple est une collection séparés par une virgule,
et délimitées par des parenthèses.
Exemple
(1, 2.2)
Python : (0, 1, 2)
Remarques
Avant : 2 3
Après : 3 2
Tuples Tuples
Méthode .count : permet de compter le nombre d'occurrences d'un objet Python dans Méthode .index (élément, début=0)
le tuple. Il renvoie une valeur entière. indice de début par défaut 0. Dans le cas de plusieurs occurrences, il renvoie la
>>> a=(1,2,3,3,1,2,1) première position de l'objet.
>>> [Link](1)
>>> a=(1,2,3,3,1,2,1) >>> [Link](2)
3
>>> [Link](1) 1
>>> [Link](2)
0 >>> [Link](2,3)
2
>>> [Link](3) 5
>>> [Link](1, 2) >>> [Link](5)
2
4 ValueError: [Link](x): x not in tuple
>>> [Link](5)
>>> [Link](3)
0
2
Brahim BAKKAS Langage Python 33 Brahim BAKKAS Langage Python 34
Tuples Tuples
Opérateurs + et *
T=(1,2,3) T=(1,2,3)
Répétition
1 1
2 2 T=(1,2,3) 1
for x in T : 2 Iteration par boucle for
print(x) 3
3 3
On peut les créer simplement les variables de type chaînes de caractères par
Les chaînes de caractères sont des variables contenants du texte. On
placement des caractères entre deux guillemets.
appelle ça "chaîne de caractères" car ce sont plusieurs caractères qui se
suivent (une suite de caractère) Exemples :
nom = "Python"
Dans une chaîne de caractères on peut trouver une succession de
adresse = "Meknès Marjane 2 N299"
Exemples de chaînes de caractères : Python traite les guillemets (double quottes) et les primes (les simples quottes) et
même un triplé de primes ou de guillemets, de la même façon.
Le type chaînes de caractères est très utilisé en informatique, il permet ch1 = "Bonjour Tout le monde ! " création par double quottes
dans plusieurs cas de simplifier la résolution des problèmes difficile à ch2 = 'Bonjour tout le monde !' création par simple quotes
résoudre de manière numérique.
ch3 = '''Bonjour tout le monde ! ''' création par un triple de primes
Remarque: Une chaine de caractères est considérée comme étant une suite de caractère (liste), chaque
Avec les triples quottes, on peut étaler la chaîne de caractères sur plusieurs lignes. caractère occupe un emplacement de 0 à la langueur de la chaine -1
Exemple : Exemple >>> chaine = "HELLO"
>>> print( chaine[0]) >>> print( chaine[2])
>>> Ch = """ H L
nom: BAKKAS
Prenom : Brahim 0, le deuxième a pour index 1, etc...
0 1 2 3 4
Ville : Meknes
H E L L O
"""
-5 -4 -3 -2 -1
-1.
En python, les chaines de caractères ne peuvent pas subir des modifications de la même. Ainsi
while:
S="Salut" >>> A= "Hello"
Par indice Par élément (caractère) >>> A[0] = "P" # instruction non permise.
for i in range(5): for car in S: Par contre on peut reconstruire une autre chaine à partir des partie de la premier chaine
print (S[i] ) print (car)
------------------------- -----------------------
S S >>> A= "Hello"
>>> A = "P" +A[1:] ello .
a a Pello
l l
u u
t t
Les opérateurs + et *
Opérateur de formatage des chaines de caractères (%) Fonctions: len, str et eval.
Une des choses les plus importantes en PYTHON Pour utiliser une fonction avec des arguments
%) de formatage de chaines de caractères chaine on doit utiliser la syntaxe suivante:
fonction(chaine)
len(chaine) Retourne la taille de la chaine
de données a aficher: ch ="Python"
taille = len(ch)
print(taille)
s pour chaine, d pur les entier, f pour les réels. On obtient : 6
print("Mon nom est %s %d str(nombre) Transforme un chiffre en texte
ch= str(6)
print("Mon nom est %s %f print(ch)
On obtient : le caractère '6'
eval
ch= eval('6')
print(ch)
On obtient : le chiffre 6
ord chr
Les deux fonctions chr et ord
Pour obtenir le code ascii d'un caractère - Pour obtenir le caractère correspondant
caractère dans une liste à un code ascii on utilise la fonction chr(i)
normalisée appelée ASCII), il suffit où i est un nombre compris entre 0 et 255
ord("A") d'appliquer la fonction ord(c) où c est le qui représente le code ascii du caractère.
caractère en question. ord renvoie un
Donne 65
nombre entre 0 et 65535.
ord("a")
S'il s'agit d'un caractère ascii, le code
Donne 97 sera compris entre 0 et 255.
chr(codeAscii) Transforme le code ASCII en caractère >>> ord('A'),ord('B'),ord('C') >>> chr(65),chr(66),chr(67)
(65, 66, 67) ('A', 'B', 'C')
chr(66)
>>> ord('a'),ord('b'),ord('c') >>> chr(97),chr(98),chr(99)
Donne 'B' (97, 98, 99)
('a', 'b', 'c')
chr(110) >>> ord(' ')
>>> chr(32)
32
''
>>> ord('à'),ord('è'),ord('é')
Application dans le cryptage des caractères (224, 232, 233)
>>> chr(224),chr(232),chr(233)
('à', 'è', 'é')
.find(car) Retourne l'index du caractère s'il est présent dans la chaîne ou -1 sinon.
Pour appliquer une méthode à une chaine avec une liste des arguments on doit utiliser la
syntaxe suivante: >>> chaine = "Brahim"
Chaine.méthode(listes arguments) >>> [Link]("h")
On obtient : 3
.upper() Retourne la chaîne en majuscule. Si le caractère n'est pas présent, find retourne -1
chaine = "brahim" >>> c="brahim"
majuscule = [Link]() >>> [Link]("d")
print(majuscule) on obtient -1.
On obtient : BRAHIM .index(car) Retourne l'index du caractère s'il est présent dans la chaîne.
.lower() Retourne la chaîne en minuscule. >>> c="brahim"
chaine = "BRAHIM" >>> [Link]("h")
minuscule = [Link]()
Si le caractère n'est pas présent, on aura une erreur: ValueError: substring not found
print(minuscule)
On obtient : brahim
.split() Retourne la chaîne sous forme de liste selon du séparateur. Méthodes Description ( S est une chaine de caractère)
chaine = "Salut ca va ?" [Link]() Renvoit True si S est composé uniquement des caractères {abcd...z} {ABCD...Z}
liste = [Link](" ") # séparateur est un espace {012..9}
print(liste) [Link]() renvoit True si S est composé uniquement des caractères {abcd...z} {ABCD...Z}
Comme ici le séparateur est l'espace, on obtient la liste suivante:
['Salut', 'ca', 'va', '?']. [Link]() renvoit True si S est composé uniquement des caractères {012..9}
.join() Retourne une liste sous forme de chaîne selon du séparateur. [Link]() renvoit True si S est composé uniquement de caractères minuscules
liste = ["Salut", "ca", "va", "?"]
[Link]() renvoit True si S
chaine = " ".join(liste) # join les éléments de la liste avec un espace chariot..)
print(chaine) [Link]() renvoit True si S
Comme ici le séparateur est l'espace, on obtient la chaine suivante Salut ca va ?. majuscule.
[Link]() renvoit True si S est composé uniquement de caractères majuscules
Liste
Python: dict
dictionnaire ensembles
Python
Dictionnaires
Chaines de
tuple
caractères
61 62
dictionnaire dictionnaire
Les types composés que nous avons abordés jusqu'à présent (chaînes, listes
et tuples) étaient tous des séquences, c'est-à-dire des suites ordonnées
d'éléments. Dans une séquence, il est facile d'accéder à un élément
quelconque à l'aide d'un index.
Les dictionnaires ressemblent aux listes dans une certaine mesure (ils sont
modifiables comme elles), mais ce ne sont pas des séquences (non
ordonnées). Nous pourrons accéder à n'importe lequel d'entre eux à l'aide
d'un index spécifique que l'on appellera une clé, laquelle pourra être
>>> dico = {'un' : 'one', 'deux': 'two three'} # Un dictionnaire >>> dico = {} # initialiser un dictionnaire vide
>>> print(dico) >>> # Ajouter une clé et sa valeur
{'un' : 'one', 'deux': 'two', 3: 'three'} >>> dico souris # Ajouter une clé et sa valeur
>>> dico # Ajouter une clé et sa valeur
>>>
>>> print(dico)
one
{'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'}
>>> dico >>> print(dico['mouse'])
deux souris
>>> dico[3] >>> print(dico[ ])
three ordinateur
>>> type(dico) >>> dico['mouse'] = 100
dict >>> dico['keyboard'] = 200
>>> print(dico)
{'computer': 'ordinateur 200 100}
dictionnaire dictionnaire
Fonctions Méthodes
>>> fruits = {"pommes":21, "melons":3, "poires":31} >>> fruits = {"pommes":21, "melons":3, "poires":31}
>>> print([Link]
>>> print([Link]()) 21 # la valeur de la clés pommes
[pommes, melons, poires] # la liste des clés >>> print
21 # la valeur de la clés pommes
On peut avoir le même résultat avec la method .keys()
>>> print(fruits)
>>> print([Link]()) {"pommes":21, "melons":3, "poires":31}
[21, 3, 31] # la liste des valeurs >>> print([Link]
21 # la valeur de la clés pommes et la supprime
>>> print([Link]()) >>> print(fruits)
[ (pommes,21) , (melons,3) , (poires,31)] # la liste des tuples (clé,valeur) {"melons":3, "poires":31} # la clé pommes est supprimé avec pop
dictionnaire dictionnaire
>>> fruits = {"pommes":21, "melons":3, "poires":31} Manipulation des dictionnaires par des clés method .keys()
>>> fruitscopie= [Link]() # faire une copie de dictionnaire fruits >>> fruits = {"pommes":21, "melons":3, "poires":31}
>>> print(fruitscopie) >>> for cle in fruits:
{"pommes":21, "melons":3, "poires":31} print(cle)
>>> fruitsNew={"oranges":120, "banane":180, "poires":160} pommes
>>> [Link](fruitsnew) # les fruits après mise à jours melons
>>> print(fruitscopie) poires
{'pommes': 21, 'melons': 3, 'poires': 160, 'oranges': 120, 'banane': 180} >>>for cle in [Link]():
>>> print(fruits) print(cle)
{"pommes":21, "melons":3, "poires":31} pommes
>>> [Link]() #vidé le dictionnaire fruitsNew melons
>>> print(fruitsNew) poires
Manipulation des dictionnaires par valeur method .values() Manipulation des dictionnaires par clé et valeur method .items()
>>> fruits = {"pommes":21, "melons":3, "poires":31} >>> fruits = {"pommes":21, "melons":3, "poires":31}
>>> for valeur in [Link](): >>> for cle,valeur in [Link]():
print(valeur) print(cle, 'sa valeur est: ', valeur)
21 pommes sa valeur est: 21
3 melons sa valeur est: 3
31 poires sa valeur est: 31
Manipulation des dictionnaires par valeur : method .keys() Pour avoir le même résultat avec la method .keys()
>>>for cle in [Link](): >>>for cle in [Link]():
print(fruits[cle]) print(cle cle])
21 pommes sa valeur est: 21
3 melons sa valeur est: 3
31 poires sa valeur est: 31
Dictionnaire Dictionnaire
Soit le Dictionnaire suivant Python inclut des méthodes de manipulation des dictionnaires :
>>> d={'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'}
D = {"name": "zahra
True [Link]()
>>> 'mouse' in [Link]()
[Link]() Retourne la liste de valeurs stockées dans le dictionnaire
True
>>> 'souris' in dico [Link](D2) Met à jour le dictionnaire dictionnaire
'C451236' in D
D.has_key('C451236')
True
True
Python: set
C451236
for cle in D : print(cle) Iteration par boucle for
E985477
78
Brahim BAKKAS Langage Python 77
Un ensemble en Python est une collection d'objets sans répétition et sans ordre (donc sans #sets are unordered, it rearranges itself in sorted order
numérotage). Ce n'est PAS une séquence ! On les note comme en maths avec des accolades >>> a = {1, 2, 7, 5, 5}
{...}. >>>
Les éléments sont de types quelconques. #ensemble vide est crée par la function set()
Exemples: {5,3,-8,2} {'o','e','y','u','a','i'} {5,'foo',(3,-2),7.4} >>> empty_set = set()
L'ensemble vide se note set() et non {} qui crée un dictionnaire ! Un ensemble est défini à l'ordre près >>> print(empty_set)
:
set()
Exemples
>>> print(type(empty_set))
>>> {3,1,2} == {2,3,1}
<class 'set' >
True
>>> empty_dictionary = {}
>>> {3,2,3,2} == {2,3}
>>> print(type(empty_dictionary))
True
<class 'dict' >
>>> a = {7, 6, 5, 4, 3, 4, 5, 6}
>>> print(a)
Création Fonctions
En extension :
>>> E = {5,2,3,1}
>>> E = {1, 2, 3, 5}
Avec la fonction set(...) de la classe set :
>>> a={1,2,3,5,8} >>> sum(a)
Convertire Chaine de caractères vers un ensemble
>>> E = set('aeiouy >>> len(a) 19
5
Convertireune liste vers un ensemble >>> max(a)
>>> E = set([5,2,5,6,2]) 8 >>> a={5,2,3,1,4}
{2, 5, 6}
>>> min(a) >>> sorted(a) #return une liste trie
Convertire u tuple vers un ensemble
>>> E = set((5,2,5,6,2)) 1 [1,2,3,4,5]
{2, 5, 6}
Fonctions méthodes
Python inclut des fonctions de manipulation des ensembles : [Link](elem): ajouter un élément à s
add