Vous êtes sur la page 1sur 36

Programmation Python

Plan du cours
 Chapitre 1 : Eléments de base du langage Python

 Chapitre 2 : Les structures conditionnelles et itératives

 Chapitre 3 : Les collections d’objets en Python

 Chapitre 4 : Les fonctions

 Chapitre 5 : Les classes

 Chapitre 6: Les fichiers

2
Collections d’objets en Python
Chapitre 3
Tuples, Listes, Chaines, Dictionnaires et Ensembles

3
Chapitre 3
1- Tuple (type tuple)

2- Liste (type list)

3- Chaîne de caractères (cas particulier de liste)

4- Dictionnaire (type dict)

5- Ensemble (type set)

6- Exercices
4
1- Tuple (type tuple)
1-1 Définition et caractéristiques
 Tableau statique en lecture seule d’objets hétérogènes
 Un tuple est constitué d'un certain nombre de valeurs séparées par des virgules. (les
éléments peuvent être entre () ou non)
 Taille et contenu fixes
 Impossible de modification: objet non mutable (immutable)
 Structure complexe (tuple de tuples et autres)
>>> fruits = ("apple", "orange", "tomato", "banana")
>>> print(type(fruits)) <class 'tuple'>
>>> print(fruits) ('apple', 'orange', 'tomato', 'banana')
>>> fruits = "apple", "orange", "tomato", "banana"
>>> print(type(fruits))
<class 'tuple'>
>>> print(fruits)
('apple', 'orange', 'tomato', 'banana') 5
1- Tuple (type tuple)
1-2 Création d’un tuple et accès aux données
#définition d'un tuple
>>> t1 = (2,6,8,10,15,26)
>>> print(t1)
(2, 6, 8, 10, 15, 26)
#taille du tuple
>>> print(len(t1))
6
#accès indicé
>>> a = t1[0] (1er élément, les indices vont de 0 à len(t1)-1)
>>> print(a)
2
>>> print(type(a)) (a n’est pas un tuple)
<class 'int'> 6
1- Tuple (type tuple)
1-2 Création d’un tuple et accès aux données
#modification d’un tuple ?
>>> t1[2] = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment (Erreur)
#plage d’indices
>>> b = t1[2:5]
>>> print(b)
(8, 10, 15)
#autre plage
>>> c = t1[:4] Les 4 premiers éléments c.-à-d. les indices 0, 1, 2, 3
>>> print(c)
(2, 6, 8, 10) 7
1- Tuple (type tuple)
1-2 Création d’un tuple et accès aux données

#indiçage négatif
>>> d = t1[-1] accéder au dernier élément du tuple
>>> print(d)
26
#indiçage négatif
>>> e = t1[-3:] les trois derniers éléments
>>> print(e)
(10, 15, 26)

8
1- Tuple (type tuple)
1-3 Autres opérations sur les tuples

 Les tuples peuvent être concaténés, répétés, indexés et tranchés.


#concaténation
>>> t1 = (2, 6, 8, 10, 15, 26)
>>> t2 = (7, 9, 31)
>>> t3 = t1 + t2
>>> print(t3)
(2, 6, 8, 10, 15, 26, 7, 9, 31)
#réplication
>>> t4 = 2 * t2
>>> print(t4)
(7, 9, 31, 7, 9, 31)
9
1- Tuple (type tuple)
1-3 Autres opérations sur les tuples
#tuples d’objets hétérogènes
>>> v1 = (3,6,"toto",True,34.1)
>>> print(v1) (3, 6, 'toto', True, 34.1)
#tuple de tuples (structure complexe)
>>> x = ((2,3,5),(6,7,9),(1,8)) sorte de tableau à deux dimensions
>>> print(x) ((2, 3, 5), (6, 7, 9), (1, 8))
>>> x[0] (2, 3, 5)
>>> x[1] (6, 7, 9)
>>> x[2] (1, 8)
#accès indicé dans un tuple de tuples
>>> print(x[2][1]) 8
#accès aux tailles dans un tuple de tuples >>> print(len(x)) 3
>>> print(len(x[2])) 2 10
2- Liste (type list)
2-1 Définition et caractéristiques
 Tableau dynamique en lecture et écriture d’objets hétérogènes
 Possibilité de modification de la taille et du contenu: objet mutable
 Liste ≈ tuple de taille dynamique et modifiable
 Séquence ordonnée de valeurs
 Ecrit sous la forme d'une séquence de valeurs séparées par des virgules entre
crochets.
 Les valeurs peuvent être de différents types (généralement, les éléments ont tous le
même type: chaine de caractères est un cas particulier d’une liste)
>>> fruits = ["apple", "orange", "tomato", "banana"]
>>> print(fruits)
['apple', 'orange', 'tomato', 'banana']
>>> print(type(fruits))
<class 'list'>
11
2- Liste (type list)
2-2 Opérations sur les listes
#définition d’une liste
>>> L1 = [2,6,8,10,15,26]
>>> print(L1)
[2, 6, 8, 10, 15, 26]
>>> print(type(L1))
<class 'list'>
#taille d’une liste
>>> print(len(L1))
6
#accès indicé
>>> a = L1[0]
>>> print(a)
2
12
2- Liste (type list)
2-2 Opérations sur les listes
#modification ! possible !
>>> L1[2] = 3
>>> print(L1[2])
3
>>> print(L1)
[2, 6, 3, 10, 15, 26]
Remarques:
 Les autres mécanismes associés aux tuples restent valables aux listes :

• plages d’indices (slicing)


• indiçages négatifs
• objets hétérogènes
• liste de listes (tableaux 2D ou +) /liste de tuples
• concaténation, réplication
13
2- Liste (type list)
2-3 Autres opérations sur les listes
#autre liste
>>> L2 = [32, 69, 28, 69] (Une liste est un objet (instance de classe)
auquel est associé des méthodes permettant de le manipuler.)
#ajout
>>> L2.append(21)
>>> print(L2)
[32, 69, 28, 69, 21]
#insertion à l’indice 1
>>> L2.insert(1,53)
>>> print(L2)
[32, 53, 69, 28, 69, 21]
#suppression l’élément d’indice 3
>>> del L2[3]
>>> print(L2) [32, 53, 69, 69, 21] (28 a disparu de L2) 14
2- Liste (type list)
2-3 Autres opérations sur les listes
#accès + suppression de l’élément d’indice 1
>>> a = L2.pop(1)
>>> print(a)
53
>>> print(L2)
[32, 69, 69, 21] (53 a disparu de L2)
#inversion
>>> L2.reverse()
>>> print(L2)
[21, 69, 69, 32]
#étendre
>>> L2.extend([34,55])
>>> print(L2)
[21, 69, 69, 32, 34, 55]
15
2- Liste (type list)
2-3 Autres opérations sur les listes
#comptage
>>> L2.count(69) 2
#trier une liste d’entiers
>>> L2.sort()
>>> print(L2) [21, 32, 34, 55, 69, 69]
#trier une liste de lettres
>>> l = ['c','g','h','a','f','e','b','d']
>>> l.sort()
>>> print(l) ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
#trier une liste de mots
>>> l = ['hello','coucou','bonjour','hi']
>>> l.sort()
>>> l ['bonjour', 'coucou', 'hello', 'hi']
Remarque: l.clear() permet de vider la liste: []
16
2- Liste (type list)
2-3 Autres opérations sur les listes
#recherche d’élément
>>> L = [20, 45, 45, 3]
>>> trouve = 3 in L
>>> print(trouve)
True
#index
>>> L.index(3)
3
#retrait par valeur
>>> L.remove(45)
>>> print(L)
[20, 45, 3]

17
2- Liste (type list)
2-4 Listes en intension (List Comprehensions)
 Objectif : un mécanisme simple (et concis) pour générer une liste à
partir d’une autre liste.
Exemple 1 : Mettre tous les chiffres au carré
source = [1,5,8,12,7] source = [1,5,8,12,7]
resultat = [] resultat = [v**2 for v in source]
for v in source: print(resultat)
resultat.append(v**2)
print(resultat) Cette écriture facilite la tâche !

Exemple 2: Traitements conditionnels


source = [1,5,8,12,7] source = [1,5,8,12,7]
resultat = [] resultat = [v**2 for v in source if (v % 2 == 0)]
for v in source: print(resultat)
if (v % 2 == 0):
resultat.append(v**2)
print(resultat) 18
2- Liste (type list)
2-5 Affectation vs Copy()
 Une variable de type liste est une référence
#L3
>>> L3 = [61,92,17]
>>> print(L3)
[61, 92, 17]
#affectation
>>> L4 = L3 En réalité, c’est la référence qui est copiée.
>>> print(L4) L3 et L4 « pointent » au même emplacement.
[61, 92, 17]
#modification d’une valeur
>>> L4[1] = 55
>>> print(L4) [61, 55, 17]
>>> print(L3) [61, 55, 17]
19
2- Liste (type list)
2-5 Affectation vs Copy()

#L3
>>> L3 = [61,92,17]
>>> print(L3)
[61, 92, 17]
#copie des valeurs
>>> L4 = L3.copy() L4 référence une nouvelle zone mémoire,
>>> print(L4) et les données de L3 y sont recopiées
[61, 92, 17]
>>> L4[1] = 55
>>> print(L4)
[61, 55, 17]
>>> print(L3)
[61, 92, 17] L3 n’est pas modifiée 20
2- Liste (type list)
2-6 Exemples
 Evaluer directement les listes suivantes :
>>> [ 1 for k in range(4) ]
[1, 1, 1, 1]
>>> [ 0 for k in range (2) ]
[0, 0]
>>> [ h.upper( ) for h in ['n','s','i'] ]
['N', 'S', 'I']
>>> [ ord(z) for z in ['a','b','c'] ]
[97, 98, 99]
>>> ['mot' + str(k) for k in range(1)]
['mot0']
21
3- Chaîne de caractères
3-1 Opérations
 Une chaîne de caractères est une liste particulière avec des méthodes
associées
#définir une chaîne
>>> s1 = "bonjour le monde"
>>> print(s1) bonjour le monde
#longueur
>>> long = len(s1)
>>> print(long) 16
#accès indicé
>>> s2 = s1[:7]
>>> print(s2) bonjour

22
3- Chaîne de caractères
3-1 Opérations

#non modifiable
>>> s1[0] = "B" Erreur: Une chaîne n’est pas modifiable
solution 1: convertir la chaine en une liste
>>> s1 = "bonjour le monde"
>>> s1 = list(s1)
>>> s1[0] = "B"
>>> ''.join(s1) 'Bonjour le monde'
solution 2: utiliser la concaténation
>>> s1 = "bonjour le monde"
>>> s1 = "B" + s1[1:]
>>> s1 'Bonjour le monde'

23
3- Chaîne de caractères
3-1 Opérations
 Une chaîne peut être transformée en liste pour réaliser des traitements
sophistiqués. L’outil est très souple.
#transformation en liste
>>> S = "Bonjour le monde"
>>> liste = list(S) (Toutes les opérations sur les listes sont possibles après)
>>> print(liste) ['B', 'o', 'n', 'j', 'o', 'u', 'r', ' ', 'l', 'e', ' ', 'm', 'o', 'n', 'd', 'e']
#découpage par séparateur
>>> S = "Bonjour le monde"
 >>> decoupe = S.split(" ") (Le séparateur peut être tout autre caractère)
>>> print(decoupe) ['Bonjour', 'le', 'monde']
#former une chaîne à partir d’une liste
>>> SB = "".join(liste)
>>> SB 'Bonjour le monde' 24
4- Dictionnaire (type dict)
4-1 Définition et caractéristiques

 Liste avec accès par clé


 Dictionnaire : collection non-ordonnée (non indicée) d’objets (simples
ou évolués) s’appuyant sur le mécanisme associatif « clé – valeur ».
 Les valeurs sont mappées sur une clé
 Les valeurs sont accessibles par leur clé
 Les clés sont uniques et immutables
 Les valeurs ne peuvent pas exister sans clé

25
4- Dictionnaire (type dict)
4-2 Opérations sur les dictionnaires
#définition d'un dictionnaire
>>> d1 = {'Pierre':17, 'Paul':15,'Jacques':16}
>>> print(d1)
{'Pierre': 17, 'Paul': 15, 'Jacques': 16}
>>> print(type(d1))
<class 'dict'>
ou
>>> print(d1.items())
dict_items([('Pierre', 17), ('Paul', 15), ('Jacques', 16)])
#nombre d'élements
>>> print(len(d1))
3

26
4- Dictionnaire (type dict)
4-2 Opérations sur les dictionnaires
#liste des clés
>>> print(d1.keys()) dict_keys(['Pierre', 'Paul', 'Jacques'])
#liste des valeurs
>>> print(d1.values()) dict_values([17, 15, 16])
#accès à une valeur par clé
>>> print(d1['Paul']) 15 ou
>>> print(d1.get('Paul')) 15
#si clé n'existe pas
>>> print(d1['Pipa']) Erreur
Remarques:
d1.clear() vide le dictionnaire
d1 est une référence, d1.copy() permet de copier le contenu. 27
4- Dictionnaire (type dict)
4-2 Opérations sur les dictionnaires
#modification
>>> d1['Jacques'] = 18
>>> print(d1) {'Pierre': 17, 'Paul': 15, 'Jacques': 18}
#ajouter un élément
>>> d1['Henri'] = 22
>>> print(d1) {'Pierre': 17, 'Paul': 15, 'Jacques': 18, 'Henri': 22}
#ajout d'un bloc d’éléments
>>> d1.update({'Monica':36,'Bill':49})
>>> print(d1)
{'Pierre': 17, 'Paul': 15, 'Jacques': 18, 'Henri': 22, 'Monica': 36, 'Bill': 49}

28
4- Dictionnaire (type dict)
4-2 Opérations sur les dictionnaires
#verifier la présence d’une clé
>>> test = 'Pierre' in d1
>>> print(test)
True
#suppression par clé
>>> del d1['Monica']
>>> print(d1)
{'Pierre': 17, 'Paul': 15, 'Jacques': 18, 'Henri': 22, 'Bill': 49}

29
4- Dictionnaire (type dict)
4-2 Opérations sur les dictionnaires
Remarque: Les clés ne sont pas forcément des chaînes de caractères.
#autre type de clé
>>> d2 =
{('Pierre',56):['Directeur',1253,True],('Paul',55):['Employé',100,False]}
>>> print(d2.keys())
dict_keys([('Pierre', 56), ('Paul', 55)])
>>> print(d2.values())
dict_values([['Directeur', 1253, True], ['Employé', 100, False]])
Dans cet exemple :
• clé est un tuple
• valeur est une liste. D’autres types sont possibles
30
5- Ensemble (type set)
5-1 Définition et caractéristiques
 Une collection non ordonnée, sans éléments en double.
 Permet:
 test d'appartenance
 élimination des entrées dupliquées
 Opérations sur les ensembles : union, intersection, différence et
différence symétrique.
 Fonctionnalité similaire aux listes
 Ne peut pas être indexé ou tranché
 Peut être créé avec {} ou vous pouvez convertir une liste en un
ensemble

31
5- Ensemble (type set)
5-2 Création d’un ensemble
#création d’un ensemble à partir d’une liste
>>> x = set([1, 2, 3])
>>> print(x)
{1, 2, 3}
>>> print(type(x))
<class 'set'>

ou directement
>>> x = {1, 2, 3}

32
6- Exercices

 Ecrire un programme qui cherche tous les nombres divisibles par 7


mais non multiples de 5 et 2 entre 700 et 1099 (les deux inclus).
Les nombres obtenus doivent être affichés dans une liste. Afficher le
nombre des nombres obtenus.

 Ecrire un programme permettant de générer la liste des nombres de


Armstrong inférieurs à 1000.
(Un nombre est dit de Armstrong s’il est égal à la somme des cubes de
ses chiffres (par exemple, 370 = 33 + 73 + 03 = 27 + 343 + 0).

33
6- Exercices

 Ecrire un programme Python qui partitionne un dictionnaire (clé:


numéro de l’étudiant, valeur: la moyenne) en deux sous dictionnaires:
 etudiantAdmis dont les clés sont les étudiants admis et les valeurs des
clés sont les moyennes obtenues (moyenne supérieurs ou égales à 10 ).
 etudiantNonAdmis dont les clés sont les étudiants non admis et les
valeurs des clés sont les moyennes obtenues (moyenne inférieur à 10).

 Ecrire un programme qui génère deux ensembles A et B contenant


chacun les diviseurs d’un nombre saisi au clavier, vérifie si A est
inclus dans B, et calcule l’union et l’intersection de l’ensemble de
diviseurs communs de deux nombres.

34
6- Exercices

 Utiliser une liste en compréhension (en intension) pour obtenir la liste


['ad', 'ae', 'bd', 'be', 'cd', 'ce'] à partir des chaînes "abc" et "de".
Indication : utilisez deux boucles for imbriquées.
 Utiliser une liste en compréhension pour calculer la somme d’une liste
d’entiers de 0 à 9.
 Voici la liste utilisée :
["T","O","A","p","t","p","l","o","e","s","t","t","r","s","t","t","t","u","m","m","p"]
A l'aide d'un script python, supprimer les éléments d'indice pair puis
supprimez toutes les lettres "t" restantes.
 Ecrire un programme qui permet d’afficher la valeur maximale
trouvée dans une liste et son indice.

35
6- Exercices

 Ecrire un programme pour calculer le N-ième terme UN de la suite de


FIBONACCI qui est donnée par la relation de récurrence:
U1=1, U2=1, UN=UN-1 + UN-2 (pour N>2)

 Ecrire un programme qui permet d’inverser une chaine de caractères


sans utiliser reverse() ou [::-1]. (Ex. l’inverse de iTeam est maeTi)

 Ecrire un programme qui saisit une chaine de caractères ch et qui


transforme toute lettre majuscule en minuscule et inversement. Ce
programme affiche aussi le nombre de lettres majuscules et de lettres
minuscules.

36

Vous aimerez peut-être aussi