Type abstrait : tableau #
Type abstrait #
Un tableau est une collection numérotée et mutable d’objets d’un même type.
On doit pouvoir :
- les créer, vide ou avec des valeurs,
- mesurer leur taille,
- accéder à un élément par son indice,
- modifieur leur contenu (ajouter, retirer, changer un élément) par leur indice
Implémentation Python : list
#
L’implémentation la plus fidèle de ce type abstrait en Python est le type list
list
#
Variantes : tuple
, str
#
Lestuple
c’est comme leslist
mais non mutable et plus rapide.
Une fois crées on ne peut les modifier.
tuple
#
Lesstr
pour string ou chaînes de caractères se comportent comme destuple
.
On peut les créer, accéder aux élément, tester la présence d’une sous-chaîne, itérer etc. mais pas les modifier.
str
#
Type abstrait : tableau associatif #
Type abstrait #
Un tableau associatif ou dictionnaire est une collection qui associé des clés à des valeurs.
L’intérêt est de pouvoir accéder en temps constant à une valeur par sa clé et de tester, toujours en temps constant, la présence d’une valeur dans la clé.
Ce sont des collections mutables, on peut changer leur contenu.
Implémentation Python : dict
#
L’implémentation la plus fidèle en Python est le type dict
dict
#
Itération #
sur les str
, tuple
, list
#
La même syntaxe pour les trois :
-
sur les valeurs directement (on n’a pas besoin de l’indice):
for elt in collection: faire un truc à elt
itérer sur les valeurs directement #
-
sur les indices (lorsqu’on en a besoin)
for i in range(len(collection)): val = collection[i] faire un truc à val ou à i
itérer sur les indices #
sur les dict
#
.keys()
ou directement
#
.items
Sur les paires (clé, valeur)
#
.valeurs
sur les valeurs seulement, on n’a pas la clé…
#
Il n’y a pas d’indice dans un dict donc pas de :
dictionnaire = {"a": 1, "b": 2} for i in range(len(dictionnaire)): val = dictionnaire[i] # provoque une KeyError
Comparaison list
vs dict
#
Avec :
tab = [12, 10, 9, 20, 14]
repertoire = {
"Paul": "0775654412",
"Jacques": "0677744111",
"Martine": "0122334455"
}
# notez la syntaxe différente :
# list: [ ... ]
# dict: { ... } et : entre les clés et valeurs
- Les
list
sont plus légers que lesdict
,tab[4]
: on accède aux éléments d’unelist
par leur indice,repertoire["Jacques"]
: on accède aux valeurs desdict
par leur clé,9 in tab
: fonctionne mais est lent. Python doit vérifier un par un les éléments,"Paul" in repertoire
: très rapide, temps constant,for elt in tab
: rapide,for cle in dictionnaire
: lent.
list
et dict
par compréhension
#
list
par compréhension
#
Les doubles des 10 premiers entiers : #
Les doubles des premiers entiers pairs : #
Les produits de tous les entiers entre 0 et 5 #
Une matrice de sommes #
dict
par compréhension
#
Même syntaxe.