Files
2024-01-25 16:45:26 +01:00
..
2024-01-25 16:45:26 +01:00

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

Licence Creative Commons
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.