W Pythonie możesz mieć wiele iteratorów ze zrozumieniem listy, takich jak
[(x,y) for x in a for y in b]
dla niektórych odpowiednich sekwencji a i b. Zdaję sobie sprawę z semantyki zagnieżdżonej pętli w zrozumieniu list Pythona.
Moje pytanie brzmi: czy jeden iterator w rozumieniu może odnosić się do drugiego? Innymi słowy: czy mogę mieć coś takiego:
[x for x in a for a in b]
gdzie aktualna wartość zewnętrznej pętli jest iteratorem wewnętrznej?
Na przykład, jeśli mam listę zagnieżdżoną:
a=[[1,2],[3,4]]
jakie byłoby wyrażenie ze zrozumieniem listy, aby osiągnąć ten wynik:
[1,2,3,4]
?? (Proszę wymienić tylko odpowiedzi na zrozumienie, ponieważ właśnie tego chcę się dowiedzieć).
[x for b in a for x in b]
To zawsze dotyczyło Pythona. Ta składnia jest bardzo wsteczna. Ogólna formax for x in y
zawsze ma zmienną bezpośrednio po for, zasila wyrażenie po lewej stronie for. Gdy tylko dokonasz podwójnego zrozumienia, twoja ostatnio iterowana zmienna jest nagle tak „daleko”. Jest niezręczny i w ogóle nie czyta naturalnie