La compréhension des listes/générateurs est une construction que vous pouvez utiliser pour créer une nouvelle liste/générateur à partir d'une liste existante.
Disons que vous voulez générer la liste des carrés de chaque nombre de 1 à 10. Vous pouvez le faire en Python :
>>> [x**2 for x in range(1,11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
ici, range(1,11)
génère la liste [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mais le range
n'est pas un générateur avant Python 3.0, et donc la construction que j'ai utilisée est une compréhension de liste.
Si je voulais créer un générateur qui fasse la même chose, je pourrais le faire comme ceci :
>>> (x**2 for x in xrange(1,11))
<generator object at 0x7f0a79273488>
Dans Python 3, cependant, range
est un générateur, donc le résultat ne dépend que de la syntaxe que vous utilisez (crochets ou parenthèses).
3 votes
Pour être clair, le nom de la langue pour ceux-ci est "générateur". expressions pas de générateur compréhensions .
4 votes
@ShadowRanger Il y a une discussion sur la Liste de diffusion Python-dev en juillet 2018 sur "la syntaxe de la compréhension des noms". où il y a eu un accord provisoire mais assez unanime pour les appeler "compréhensions de générateur" par souci de cohérence.