Structures imbriquées et compréhensions
Il est possible de combiner listes, tuples, et dictionnaires. Avec la syntaxe des compréhensions, l'écriture des listes et dictionnaires semble plus élègante.
Les structures imbriquées
On peut imbriquer des listes, des tuples et des dictionnaires. Par contre, les clés de dictionnaire ne peuvent pas muter.
De ce fait, nous pouvons construire des listes de listes, des listes de tuples, des listes de dictionnaires, des tuples de listes, des dictionnaires de tuples...
lst = [(4,5), (-1, 0), (2.5, 1)]
len (lst)
lst[1]
Ici, on crée une liste de trois tuples.
Que peuvent représenter ces trois tuples ?
On peut vérifier qu'il s'agut bien d'un tuple :
t = lst[1]
type(t)
On peut également accéder directement à l'abscisse ou à l'ordonnée d'un point :
lst[2][1]
Ici, on accède donc à la première valeur du tuple n°2.
Parcours
Soit une liste de dictionnaires
persos = [{"prenom" : "Bilbo", "nom" : "Baggins", "age" : 111},
{"prenom" : "Frodo", "nom": "Baggins", "age" : 33},
{"prenom" : "Sam", "nom": "Gamgee", "age" : 21}]
On peut parcourir cette liste en séparant chaque dictionnaire :
for p in persos:
print ("----------")
for k, v in p.items():
print (k, ' : ', v)
Que fait la première boucle ?
La seconde ?
Les compréhensions
La notation en compréhension permet de créer une liste ou un dictionnaire sans en lister les élèments de manière explicite.
Par exemple, pour créer une liste comportant les entiers de 2 à 10 inclus :
[i for i in range (2, 11)]
On peut aussi appliquer des fonctions à chaque élément :
[i ** 2 for i in range (2, 11)]
Enfin, il est possible d'appliquer des conditions dans votre déclaration de structures:
[i ** 2 for i in range (2, 51) if (i ** 2) % 10 == 9]
Que fait cette instruction ?
Pour les dictionnaires : la syntaxe est la même, il faut juste préciser la clé et la valeur de chaque élèment :
{k: k ** 3 for k in range (2, 11)}
Cela va créer un dictionnaire donc chaque clé sera un nombre entre 2 et 11 non compris, et où la valeur de chaque clé sera le cube de la clé associée.
Auteur : Florian Mathieu
Licence CC BY NC
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.