IV.
Les collections sous Python
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 1
IV. Les collections sous Python
Les tuples
Tableau statique en lecture seule d’objets hétérogènes
Création des tuples et accès aux données
#définition d'un tuple Les ( ) sont importantes pour indiquer qu’il
t1 = (2,6,8,10,15,26) s’agit d’un tuple, « , » sépare leséléments.
print(t1)
#taille du tuple (2,6,8,10,15,26)
print(len(t1)) 6 éléments
#accès indicé
a = t1[0] 1er élément, les indices vont de 0 àlen(t1)-1
print(a) Remarque : a n’est pas un tuple
#modification ?
t1[2] = 3 ERREUR
#plage d'indices Attention : on récupère à partir du n°2 (inclus) aun°5
b = t1[2:5] (non-inclus) c.-à-d. les indices 2, 3, 4
print(b) Résultat : b est un tuple avec(8,10,15)
#autre plage
c = t1[:4] Les 4 premiers éléments c.-à-d. les indices 0, 1, 2, 3 : nous
print(c) obtenons le tuple (2, 6, 8, 10).
#indiçage négatif
d = t1[-1] Le 1er élément à partir de la fin :26
print(d)
#indiçage négatif
e = t1[-3:] Les 3 derniers éléments : (10,15,26)
print(e) 2
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3
IV. Les collections sous Python
Les tuples Tableau statique en lecture seule d’objets hétérogènes
Création des tuples et accès aux données
#concaténation
t2 = (7, 9,31)
t3 = t1 + t2 (2,6,8,10,15,26,7,9,31)
print(t3)
#réplication
(7,9,31,7,9,31)
t4 = 2 * t2
print(t4)
#tuples d'objets hétérogènes Cane pose absolument aucun
v1 = (3,6,"toto",True,34.1) problème.
print(v1)
#tuple de tuples
x = ((2,3,5),(6,7,9),(1,8)) Sorte de tableau à 2 dimensions
print(x)
x[0] (2,3,5) Organisation de
#accès indicé x[1] (6,7,9) la structure
print(x[2][1]) 8 x[2] (1,8)
#accès aux tailles
print(len(x)) 3 3 éléments sur la 1ère dimension
print(len(x[2])) 2 2 éléments dans le tuple référencé par x[2]
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 3
IV. Les collections sous Python
Les tuples
Tableau statique en lecture seule d’objets hétérogènes
Bilan des tuples
Type ‘tuple’ cf. appel de la fonction type()
Collection d’objets de types hétérogènes
Taille et contenu fixé lors de l’écriture du programme
Impossible de modifier : objet non mutable
La variable de type tuple est en réalité une référence
(pointeur de pointeur)
Bénéficie du mécanisme de ramasse miettes
Accès indicé, plage d’indices possible, indices
négatifs possibles aussi
Structures complexes avec tuple de tuples
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 4
IV. Les collections sous Python
Les Listes
Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list
Liste ≈ tuple de taille dynamique et modifiable
#définition d'une liste Les [ ] sont importantes pour indiquer qu’il
L1 = [2,6,8,10,15,26] s’agit d’une liste, « , » sépare leséléments.
print(L1) [2,6,8,10,15,26]
#taille de la tuple = 6
[2,6,3,10,15,26]
print(len(L1))
Les autres mécanismes associés aux
#accès indicé = 2
tuples sont transposables aux listes :
a = L1[0]
print(a) • plages d’indices
• indiçages négatifs
#modification ! Possible ! • objets hétérogènes
L1[2] = 3 • liste de listes (tableaux 2D ou +)
print(L1) • concaténation, réplication
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 5
IV. Les collections sous Python
Les Listes Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list modification de taille et de contenu
Une liste est un objet (instance de classe) auquel est
associé des méthodes permettant de le manipuler.
#ajout
[Link](21) [32,69,28,69,21]
print(L2)
#insertion à l'indice 1 [32,53,69,28,69,21]
[Link](1,53)
print(L2) [32,53,69,69,21] 28 a disparu de L2
#suppression elt n°3
del L2[3]
print(L2) [32,69,69,21] 53 a disparu de L2
#accès + suppression elt n°1
a = [Link](1)
print(a) renvoie 53
#inversion [21,69,69,32] Remarque :
[Link]()
print(L2) [Link]()
#étendre [21,69,69,32,34,55] Permet de vider la liste
[Link]([34,55])
print(L2) 6
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3
IV. Les collections sous Python
Les Listes Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list
Les « List Comprehensions » (traduite en « listes en intension »)
Objectif : un mécanisme simple (et concis) pour générer une liste à partir d’une autre liste.
Exemple 1 : Monter tous les chiffres au carré
source = [1,5,8,12,7]
resultat = []
for v in source: resultat = [v**2 for v insource]
[Link](v**2) print(resultat)
print(resultat)
Exemple 2 : Actionsconditionnelles
source = [1,5,8,12,7]
resultat = []
for v in source: resultat = [v**2 for v in source if (v %2== 0)]
if (v % 2 == 0): print(resultat)
[Link](v**2)
print(resultat)
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 7
IV. Les collections sous Python
Les Listes
Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list
Plus loin avec les listes : traitement par le contenu
L2 = [21,69,69,32,34,55]
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 8
IV. Les collections sous Python
Les Listes Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list
Les « List Comprehensions » (traduite en « listes en intension »)
Une variable de type liste est une référence
#L3
L3 = [61,92,17]
print(L3)
#affectation ? Enréa lité, c’est la référence qui estcopiée.
L4 = L3
print(L4) L3et L4 « pointent » au même endroit.
#modification d'une valeur
L4[1] = 55
#répercussions
print(L4) [61,55,17]
#mais aussi sur L3
print(L3) [61,55,17] ???
#L3
L3 = [61,92,17]
#copie des valeurs
L4référen ce une nouvelle zonemémoire,
L4 = [Link]()
print(L4) et lesdon nées de L3 y sont recopiées.
L4[1] = 55
print(L4) [61,55,17]
print(L3) [61,92,17] !!!
L3 n’est pas impacté.
9
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3
IV. Les collections sous Python
Les Listes Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list Les « List Comprehensions » (traduite en « listes en intension »)
Un exemple : somme de valeurs saisies par l’utilisateur
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 10
IV. Les collections sous Python
Les Listes Tableau dynamique en lecture-écriture d’objets hétérogènes
Liste – Le type list Les « List Compréhensions » (traduite en « listes en intension »)
Un exemple : boucle directe sur les éléments de la liste
Permet de définir une
liste initialement vide.
Une liste est directement
« itérable », il n’est pas
nécessaire de passer par un
indice (un peu comme le
foreach de certains langages
de prog.).
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 11
IV. Les collections sous Python
CHAÎNE DE CARACTÈRES Un cas particulier de liste
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" Guillemets pour délimiter une chaîne
print(s1)
#longueur
long = len(s1) Mécanisme identique aux
print(long)
#accès indicé
tuples et listes
s2 = s1[:7]
print(s2)
#non modifiable [Link] chaîne n’est pas modifiable. Il faut mettre
#s1[0] = "B" le résultat d’une manipulation dans une autre chaîne.
#méthodes associées
S = [Link]()
print(S)
#recherche d'une sous-chaîne id = [Link]("JO")
Des méthodes spécifiques permettent
print(id) 3(1ère occurrence si plusieurs)
de manipuler les chaînes. Cf.
#nb d'occurences
nb = [Link]("ON") [Link]
print(nb) 2 [Link]#text-sequence-type-str
#remplacement de « O » par « A »
SA = [Link]("O","A")
print(SA) 12
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3
IV. Les collections sous Python
CHAÎNE DE CARACTÈRES Un cas particulier de liste
Transformation explicite en liste (pour traitements)
Une chaîne peut être transformée en liste pour réaliser des traitements sophistiqués. L’outil est très souple.
#transf. en liste [‘B’,’O’,’N’,’J’,’O’,’U’,’R’,’ ‘,’L’,’E’,’ ‘,’M’,’O’,’N’,’D’,’E’]
liste = list(S) Toutes les opérations sur les listes sont possibles par la suite.
print(liste)
#découpage par séparateur [‘BONJOUR’,’LE,’MONDE’]
decoupe = [Link](" ") Espace est utilisé comme séparateur ici, mais
print(decoupe) ça peut être tout autre carac., y compris un
caractère spécial (ex. \t pourtabulation)
#former une chaîne à
#partir d’une liste "BONJOUR-LE-MONDE"
SB = "-".join(decoupe) Les mots de la liste ont été fusionnés avec le
print(SB) séparateur "-". Tout séparateur est possible, y
compris la chaîne vide.
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 13
IV. Les collections sous Python
CHAÎNE DE CARACTÈRES Un cas particulier de liste
Une chaîne de caractères est une liste particulière avec des méthodes associées
Un exemple
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 14
IV. Les collections sous Python
CHAÎNE DE CARACTÈRES
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 15
IV. Les collections sous Python
CHAÎNE DE CARACTÈRES
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 16
V. Les collections sous Python
CHAÎNE DE CARACTÈRES
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 17
II. Les bases de la programmation en Python
Types de données, variables, opérations
Les variables sur Python
Quelques fonctions pour manipuler des chaînes de caractères sur python
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 18
II. Les bases de la programmation en Python
Types de données, variables, opérations
Les variables sur Python
Quelques fonctions pour manipuler des chaînes de caractères sur python
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 19
II. Les bases de la programmation en Python
Types de données, variables, opérations
Les variables sur Python
Quelques fonctions pour manipuler des chaînes de caractères sur python
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 20
V. Les collections sous Python
Les dictionnaires Liste avec accès par clé Dictionnaire : collection
#définition d'un dictionnaire
non-ordonnée (non
d1 = {'Pierre':17, 'Paul':15,'Jacques':16}
print(d1) indicée) d’objets (simples
#ou Noter le rôle de { }, de « :»
ou évolués) s’appuyant sur
print([Link]()) et « , »
#nombre d'élements
le mécanisme associatif
print(len(d1)) 3 éléments « clé – valeur ».
#liste des clés [‘Paul’, ‘Jacques’, ‘Pierre’]
print([Link]())
#liste des valeurs
[15, 16, 17]
print([Link]())
#accès à une valeur par clé Remarques :
print(d1['Paul']) 15 1) [Link]() vide
#ou le dictionnaire
print([Link]('Paul')) 15
(2) d1 est une référence,
#si clé n'existe pas [Link]() permet de
print(d1['Pipa']) ERREUR copier le contenu.
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 21
V. Les collections sous Python
Les dictionnaires Liste avec accès par clé
Dictionnaire – Modifications, ajouts et suppressions
#modification
d1['Jacques'] = 18 {'Pierre':17, 'Paul':15,'Jacques':16} {'Pierre':17, 'Paul':15,'Jacques':18}
print(d1) Ajout par définition d’une nouvelle paire « clé – valeur ».
#ajouter un élément N.B. : Si ‘Henri’ existe déjà, son ancienne valeur sera
d1['Henri'] = 22 écrasée.
print(d1) {'Pierre':17, 'Paul':15,'Jacques':18, ‘Henri’:22}
#ajout d'un bloc d’éléments
[Link]({'Monica':36,'Bill':49})
print(d1) {'Pierre':17, 'Paul':15,'Jacques':18, ‘Henri’:22, ‘Monica’:36, ‘Bill’ : 49}
#détecter présence 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}
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 22
V. Les collections sous Python
Les dictionnaires Liste avec accès par clé
Plus loin avec les clés
Les clés ne sont pas forcément des chaînes de caractères.
L’outil est très souple mais, attention, autant de liberté
peut être aussi préjudiciable. Il faut être très rigoureux.
#autre type de clé
d2 = {('Pierre',56):['Directeur',1253,True],('Paul',55):['Employé',100,False]}
print([Link]())
print([Link]())
Dans cet exemple :
• clé est un tuple ;
• valeur est une liste.
D’autres types sont possibles (ex. instances de classes ).
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 23
V. Les collections sous Python
Les dictionnaires Liste avec accès par clé Exemple
Accès indicé malaisé (très),
on a intérêt à passer par un
itérateur pour passer en
revue le dictionnaire.
Exemple :
Kate 15.0
Pipa 23.5
William 10.7
49.2
02/12/2024 Dr Gouayon KOALA UTS MPI/L2_S3 24