if in for loop

Ryan Lowe ryanlowe0 at msn.com
Thu Aug 21 00:07:23 CEST 2003

"Sean Ross" <sross at connectmail.carleton.ca> wrote in message
news:sgM0b.2022$c_.87471 at news20.bellglobal.com...
> "Ryan Lowe" <ryanlowe0 at msn.com> wrote in message
> news:vXB0b.126774$_R5.47942299 at news4.srv.hcvlny.cv.net...
> > your complaint is this?
> [snip code example]
> > i agree its not as clear whats going on here as in the if example, but
> > no less readable than the list-comprehension version, i.e. msgs = ["%s
> > %s"%(x,y) for x in words for y in otherwords]
> > whats the argument? should they do away with double for's in list-comp?
> Actually, I hadn't really formulated an argument. I'm indifferent to the
> proposal, with some slight leaning towards non-acceptance (as my "-0" vote
> suggests). I don't think I can justify why I don't care for the proposal.
> does seem reasonable. If your goal is to maintain consistency within the
> language, then this proposal would seem to aid that goal. I also prefer
> a language provide consistency. The problem, I suppose, should you choose
> be consistent, is deciding in which direction to focus that consistency.
> While I very much enjoy list comprehensions, and would prefer that they
> be removed from the language (read, "Never remove them from the language,
> please!" and "Could we please have generator comprehensions, as well?"), I
> also see that they are somewhat of an anomaly and that they can hinder
> readability when they are allowed to grow without bound. Of course, the
> can be said for deeply nested for-loops - at some point, as you add more
> more for-loops, the meaning becomes less and less clear (which would be
> reason people refactor such things using functions). Anyway. I suppose the
> question I was addressing in the earlier post was this: Does consistency,
> this instance, aid or hinder, and what does it aid or hinder. If we argue
> that filtering should be added to the for-loop syntax because that syntax
> should be more consistent with the list comprehension syntax,  then it
> reasonable to also argue for the inclusion of multiple for-expressions, on
> the same basis (Is this argument fallacious? I'm not sure...looks like a
> slippery-slope) . So, anticipating that others might make this argument
> one part of list comprehension syntax had been retro-fitted into the
> existing for-loop syntax, it seemed reasonable to ask - do you also think
> multiple for-expressions in a for-loop would be of benefit? Do you want
> the one and not the other? (False dichotomy?) If so, why? If not, why not?
> These are topics you may wish to address, were you to write a PEP. As I've
> said, I'm pretty much neutral towards the whole thing, with some tendency
> towards caution.
> [snipped quote from John Roth posting]
> > **harder** to read!? cmon now. i will buy its certainly not a necessary
> > change, but harder to read...
> for x in X if condx(x) for y in Y if condy(y) for z in Z if condz(z) for w
> in W if condw(w):
>     suite
> for x in X:
>     if condx(x):
>         for y in Y:
>              if condy(y):
>                  for z in Z:
>                       if condz(z):
>                            for w in W:
>                                if condw(w):
>                                    suite
> Neither strikes me as being particularly easier to read than the other.
> for x in X if condx(x):
>     suite
> for x in X:
>     if condx(x):
>         suite
> Same thing here.

thanks for the reply. well put.

i guess the tradeoff comes down to, on the one hand, added consistency and
reduction of nesting layers, and on the other, going through the bother of
implementing it. i can clearly see from the replies that programmer laziness
and resistance to change has won :) so consider the issue dropped.

More information about the Python-list mailing list