<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 17 October 2016 at 21:22, Random832 <span dir="ltr"><<a href="mailto:random832@fastmail.com" target="_blank">random832@fastmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><br>
</span>No, it's not.<br>
<br>
For a more concrete example:<br>
<br>
[*range(x) for x in range(4)]<br>
[*(),*(0,),*(0,1),*(0,1,2)]<br>
[0, 0, 1, 0, 1, 2]<br>
<br>
There is simply no way to get there by using flatten(range(4)).</blockquote><div><br></div><div>the equivalent flatten for that is:</div><div>flatten(range(x) for x in range(4)) ; flatten has no magic so will not replace a piece of code with two range calls (like your example) for code with one.</div><div><br></div><div>I see some mention that flatten does not cover all cases; but correct me if I'm wrong with this statement:</div><div><br></div><div>Any case of [*<exp1> for <vars> in <exp2>] could be replaced with flatten(<exp1> for <vars> in <exp2>). Where flatten is defined as </div><div><br></div><div>def flatten(it):</div><div>    return [x for for subit in it for x in subit]</div><div><br></div><div>(there is a slight difference where I'm making flatten iterable instead of a list)</div><div><br></div><div>What perhaps was confusing is that in the case where <exp1> and <vars> are the same, you can also write flatten(<exp2>).</div><div><br></div><div>So, for me, this feature is something that could be covered with a (new) function with no new syntax required. All you have to learn is that instead of [*...] you use flatten(...)</div><div><br></div><div>Am I wrong? I keep reading people on both sides saying "flatten is not enough in all cases", and I can find a counterexample (even for 1 level flatten which is what I used here)</div><div><br></div><div>PS: or alternatively, flatten = lambda it: list(itertools.chain(it)) # :)</div><div>PPS: or if you prefer to work with iterators, flatten = itertools.chain</div><div><br></div></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Daniel F. Moisset - <span style="font-size:small">UK Country Manager</span><div><a href="http://www.machinalis.com" target="_blank">www.machinalis.com</a></div><div>Skype: @dmoisset</div></div></div></div></div>
</div></div>