En Python, vous pouvez avoir plusieurs itérateurs dans une liste de compréhension, comme
[(x,y) for x in a for y in b]
pour certaines séquences appropriées a et b. Je connais la sémantique des boucles imbriquées des compréhensions de liste de Python.
Ma question est: un itérateur dans la compréhension peut-il se référer à l'autre? En d'autres termes: pourrais-je avoir quelque chose comme ceci:
[x for x in a for a in b]
où la valeur actuelle de la boucle extérieure est l'itérateur de l'intérieur?
Par exemple, si j'ai une liste imbriquée:
a=[[1,2],[3,4]]
quelle serait l'expression de compréhension de liste pour atteindre ce résultat:
[1,2,3,4]
?? (Veuillez énumérer uniquement les réponses de compréhension, car c'est ce que je veux savoir).
[x for b in a for x in b]
Cela a toujours été un bug sur python. Cette syntaxe est tellement à l'envers. La forme générale de ax for x in y
toujours la variable directement après le for, alimente l'expression à gauche du for. Dès que vous effectuez une double compréhension, votre variable itérée la plus récente est soudainement "si loin". C'est maladroit, et ne lit pas du tout naturellement