<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> I think wasting of indentation levels for a single logical block should be<br>
> avoided if possible to make the code more legible, otherwise one hits the<br>
> suggested line length limit too fast - suppose this is now inside a method,<br>
> you already lose at least 8 char ...<br>
<br>
</span>Hence generators, which allow the nested loops to be readily factored<br>
out into a named operation.<br>
<br>
    def iter_interesting_triples(seq1, seq2, seq3):<br>
<span class="">        for x in seq1:<br>
            if p1(x):<br>
                for y in seq2:<br>
</span>                    if p2(x, y):<br>
                        for z in seq3:<br>
                            if p3(x, y, z):<br>
                                yield x, y, z<br>
<br>
    for x, y, z in iter_interesting_triples(seq1, seq2, seq3):<br>
        f(x, y, z)<br></blockquote><div><br></div><div>This is an elegant solution, but I think it makes the code less clear if one has to loop up the definition of the generator.</div><div><br></div><div>I any case, irrespective of limits or being dispensable, I think it would be more consistent for the language to allow the same syntax for "for" loops as is allowed in comprehensions.</div></div></div></div>