Types construits #
Qu’est-ce ? #
Par type construit, on entend, tout objet composé de plusieurs objets simples
Tuples #
Qu’est-ce qu’un tuple ? #
Un tuple est une série de valeurs séparées par des virgules.
Exemple : tup = (1, 2, 3)
ou tup = ('a', 'b', 'c')
En python, les tuples peuvent être constitués de valeurs de type différent.
Manipuler les tuples #
Les tuples ne sont pas mutables : on ne peut en changer le contenu
On accède à un élément par son indice :
>>> tup = ('a', 'b', 'c')
>>> tup[2]
'c'
Fonction qui renvoie un tuple #
Une fonction peut renvoyer un tuple !
def oppose_vecteur(x, y):
return -x, -y
et cela donne :
>>> oppose_vecteur(1, 3)
(-1, -3)
Tableaux : le type list
#
Qu’est-ce qu’un tableau ? #
Un tableau est une collection mutable d’objets.
Contrairement aux tuples, on peut en changer le contenu. On peut aussi ajouter ou retirer des éléments à un tableau.
En python, tous les tableaux ont le type list
Pourquoi cette distinction ? Pour éviter les confusions ultérieures !
Tableaux construits à la main #
On peut créer, de plusieurs manières un tableau :
>>> tab = ["pierre", "paul", "jacques"]
>>> tab[1]
"paul"
À l’aide d’une boucle :
>>> tab = [] # tableau vide
>>> for i in range(5): # i de 0 à 4
... tab.append(i ** 2) # ajouter un élément à la fin de tab
>>> tab
[0, 1, 4, 9, 16]
Tableaux construits par compréhension #
Il existe une manière beaucoup plus simple d’écrire les tableaux : par compréhension
Pour construire la liste des carrés des entiers de 0 à 4 :
[i ** 2 for i in range(5)]
soit :
[0, 1, 4, 9, 16]
Liste par compréhension complexe #
On peut imbriquer plusieurs boucles ou ajouter des conditions :
[carres des entiers inférieurs à 10 et multiples de 3] = [0, 9, 81]
En python :
[i ** 2 for i in range(10) if i % 3 == 0]
soit
[0, 9, 81]
i % 3
est le reste de la division de i par 3 (se lit i
modulo 3
).
Dictionnaire #
Qu’est-ce qu’un dictionnaire ? #
Un dictionnaire est un enregistrement de valeurs associées à des clés.
Exemple : répertoire téléphonique
Nom | Téléphone |
---|---|
Marcel | 0320666666 |
Robert | 0320123456 |
Amandine | 0320987654 |
Dictionnaire par clés et valeurs #
En python cela donne :
tel = {
"Marcel": "0320666666",
"Robert": "0320123456",
"Amandine": "0320987654",
}
Accéder à une valeur #
On accède à une valeur par sa clé
dictionnaire[cle] ----------> valeur
>>> tel["Amandine"]
"0320987654"
Dictionnaire : mutable #
Les dictionnaires sont mutables.
Si Robert change de numéro :
tel["Robert"] = "0320445566"
Remarquez bien la différence de syntaxe : on utilise:
pour déclarer le dictionnaire et=
pour changer une valeur
Itérer #
Collections #
En python (mais aussi dans beaucoup de langages), les éléments cités plus haut sont des collections. Cela signifie qu’on peut itérer dessus.
Itérer : parcourir à l’aide d’une boucle
On peut écrire des boucles for element in objet_construit:
Cas simple #
Pour les :
- chaînes de caractères,
- tuples,
- listes Python (=tableau)
La syntaxe est la même et element
désigne l’objet contenu dans objet_construit
>>> chaine = "aZe"
>>> for lettre in chaine:
... print(lettre)
a
Z
e
>>> tuple = (6, 4, 2)
>>> for t in tuple:
... t ** 2
36
16
4
>>> liste = [a-1 for a in range(3)]
>>> for x in liste:
... x + 2
1
2
3
Cas particulier propres aux dictionnaires #
Il existe plusieurs manières d’itérer sur un dictionnaire.
Mais ATTENTION dans Python < 3.6 il n’y a pas d’ordre particulier.
Itération simple :
tel = {
"Marcel": "0320666666",
"Robert": "0320123456",
"Amandine": "0320987654",
}
>>> for personne in tel:
... tel[personne]
"0320666666"
"0320123456"
"0320987654"
Itération avec .keys()
keys()
: collection des clés (les noms dans l’exemple plus haut.)
>>> for personne in tel.keys():
... tel[personne]
"0320666666"
"0320123456"
"0320987654"
C’est identique à l’itération normale !
Itération avec .items()
items()
: collection des TUPLES (clé, valeur)
>>> for personne, tel in tel.items():
... print("le numéro de ", personne, " est ", tel)
Le numéro de Marcel est 0320666666
Le numéro de Robert est 0320123456
Le numéro de Amandine est 0320987654
Itération avec .values()
Cette fois on ne récupère que les valeurs. C’est la moins utilisée en pratique.
Dictionnaire par compréhension. #
On peut créer des dictionnaires par compréhension :
>>> carres = {a: a ** 2 for a in range(4)}
>>> carres
{
0: 0,
1: 1,
2: 4,
3: 9
}
list
& dict
Python : comparaison
#
Ces deux structures ont des points communs :
- Collection d’objets
- Accéder à un élément avec
collection[ obj ]
- Effacer avec
del collection[ ob ]
- Itérer avec
for obj in collection: ...
Mais aussi des différences majeures
- Les
dict
sont beaucoup plus complexes que leslist
- L’itération est rapide pour une
list
, très lente pour undict
- Les
dict
n’ont pas d’ordre : pas de premier, second, dernier élément…
Vitesses #
Généralement, les list
sont beaucoup plus rapides que les dict
.
Une exception majeure, l’appartenance : obj in collecion
. Plus rapide pour les dict que les list.
Pour les list
il faut tout parcourir et comparer élément par élément, pour les dict
c’est en temps constant.
Implantation #
Les list
python sont des tableaux dynamiques mutables qui acceptent des éléments de n’importe quel type.
Les dict
python sont des tableaux d’associations mutables dans lesquels on ne peut ajouter que des clés non mutables.
Par exemple (1, 2)
peut être un clé de dictionnaire mais [1, 2]
ne le peut.
Le type dict
fait l’objet d’un chapitre complet de terminale aussi on s’arrête là.