> I feel like I should be honest about something else - I'm always a > little bit confused by the ordering for comprehensions involving > multiple clauses. For me, it's the fact that: > [[a for a in b] for b in ['uvw', 'xyz']] == [['u', 'v', 'w'], ['x', 'y', > 'z']] > which makes me want to write: > [a for a in b for b in ['uvw', 'xyz']] > but that's an error, and it actually needs to be > [a for b in ['uvw', 'xyz'] for a in b] == ['u', 'v', 'w', 'x', 'y', 'z'] > > So when this talk of readability issues comes up and the recommended > alternative is something that I don't really find readable, it's > frustrating. To me this proposal is something that would allow for more > things to be expressed without resorting to multi-loop comprehensions. >
Thinking about it, though, I ended up exactly where you are now, except that I then thought about where an item would be known, and it seemed to me, yes, an item would be more likely known *after* looping over it rather than before: [bi for bi in before for before in iterable] # why should "before" exist before it is looped over? correctly: [bi for before in iterable for bi in before] it doesn't, it should be declared to the right hand side and only the result is kept over at the left hand edge. On a same note, with if expressions the picture might look different: [bi for bi in before for before in iterable if before[0] < 3] # ... is bi filtered now or not? correctly: [bi for before in iterable if before[0] < 3 for bi in before] it is filtered very clearly this way. cheers! mar77i _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/