Itérateurs indépendants dans la compréhension de liste
En Python, les compréhensions de liste autorisent plusieurs boucles d'itération. Prenons l'exemple suivant :
[(x, y) for x in a for y in b]
où a et b sont des séquences. Cette compréhension crée des paires d'éléments à partir du produit cartésien de a et b.
Les itérateurs peuvent-ils être dépendants ?
Un itérateur dans une compréhension de liste peut-il faire référence à un autre ? La réponse est oui, et le code suivant le démontre :
[x for x in a for a in b]
Dans cette compréhension, l'itérateur de boucle externe a devient l'itérateur pour la boucle intérieure. Cela aplatit efficacement une liste imbriquée.
Exemple
Si nous avons une liste imbriquée a :
a = [[1, 2], [3, 4]]
La compréhension de liste suivante l'aplatirait en une seule liste :
[x for x in a for a in b]
Résultat :
[1, 2, 3, 4]
Solution alternative utilisant des générateurs
Dans le code Python fourni, le texte est stocké sous forme de phrases et la tâche consiste à extraire une seule liste de mots. Voici comment y parvenir à l'aide d'un générateur :
text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)
La variable gen donne désormais la liste aplatie de mots :
for word in gen:
print(word)
Sortie :
Hi Steve! What's up?
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3