Créer des listes en Python est très facile. On peut utiliser [0] * 50 pour créer une liste de 50 éléments remplis de 0. Une autre façon qui offre un contrôle plus précis sur les éléments est d'itérer avec une boucle for et d'ajouter des éléments un par un. Cependant, il existe une autre manière de créer une liste grâce à la compréhension de listes. Si nous voulons créer une liste des carrés des nombres de 1 à 100, nous pourrions le faire avec :
squares = []
for n in range(1, 100):
squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Ces deux programmes afficheront la même sortie et créeront la même liste de carrés - [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Ainsi, la syntaxe de la compréhension de listes est :
La compréhension est placée entre des crochets []
La boucle for itère sur des valeurs
Les éléments de la liste viennent avant le mot-clé for et peuvent dépendre de la variable de la boucle for.
Dans le cas de l'envoi d'invitations d'anniversaire, imaginez que vous avez créé une liste de noms que nous souhaitons inviter, mais nous les avons tous écrits en minuscules par accident. Nous pouvons maintenant utiliser une compréhension de liste pour corriger cela :
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = []
for name in invites:
fixed.append(name.title())
print(fixed)
invites = [
'anna',
'alice',
'bob',
'simon',
'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Ces deux programmes afficheront ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].
Défi
Étant donné n noms et prénoms, on vous demande d'extraire les prénoms et d'imprimer à la fois la liste initiale et la liste avec seulement les prénoms.
La première ligne de l'entrée contient un entier n. Les n lignes suivantes contiennent des paires nom prénom.
Le programme doit d'abord imprimer la liste initiale, puis la liste avec seulement les prénoms.
Entrée
Sortie
3
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall Mathers
Peter Hernandez
Curtis Jackson
Marshall
Peter
Curtis
Astuce
Vous pouvez utiliser .split()[0] pour obtenir le premier élément après avoir séparé la chaîne par des espaces.
Vous pouvez même imprimer avec une compréhension de liste :
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]