Itérateurs indépendants dans la compréhension de liste
En Python, les compréhensions de liste permettent plusieurs boucles d'itération. Considérons l'exemple suivant :
<code class="python">[(x, y) for x in a for y in b]</code>
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 :
<code class="python">[x for x in a for a in b]</code>
Dans cette compréhension, l'itérateur de boucle externe a devient l'itérateur de la boucle interne. Cela aplatit efficacement une liste imbriquée.
Exemple
Si nous avons une liste imbriquée a :
<code class="python">a = [[1, 2], [3, 4]]</code>
La compréhension de la liste suivante l'aplatirait en un seul list :
<code class="python">[x for x in a for a in b]</code>
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 :
<code class="python">text = (("Hi", "Steve!"), ("What's", "up?")) gen = (word for sentence in text for word in sentence)</code>
La variable gen donne désormais la liste de mots aplatie :
<code class="python">for word in gen: print(word)</code>
Sortie :
Hi Steve! What's up?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!