<br><br><div class="gmail_quote">On Sat, Mar 15, 2008 at 2:05 PM, BJ√∂rn Lindqvist &lt;<a href="mailto:bjourne@gmail.com">bjourne@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Sat, Mar 15, 2008 at 4:15 PM, Guido van Rossum &lt;<a href="mailto:guido@python.org">guido@python.org</a>&gt; wrote:<br>
&gt; &nbsp;&gt;&gt;&gt; L = [ a, (3, 4), {5}, {6: None}, (i for i in range(7, 10)) ]<br>
&gt; &nbsp;&gt;&gt;&gt; [ *item for item in L ]<br>
&gt; &nbsp;[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]<br>
<br>
</div>Can you mix freely?<br>
<br>
&gt;&gt;&gt; [*(*item, *item) for item in L]<br>
[0, 1, 2, 0, 1, 2, 3, 4, 3, 4, 5, 5, 6, 6, 7, 8, 9, 7, 8, 9]<br>
<font color="#888888"></font></blockquote><div><br>Of course. It&#39;s just a generalization of *, it&#39;s not a special case. [*(*item, *item)] is automatically parsed correctly. Of course, since L contains a generator, the output isn&#39;t entirely like you suggested:<br>
<br>&nbsp;&gt;&gt;&gt; a = [0, 1, 2] <br>&gt;&gt;&gt; L = [ a, (3, 4), {5}, {6: None}, (i for i in range(7, 10)) ]<br>&gt;&gt;&gt; [*(*item, *item) for item in L]<br>[0, 1, 2, 0, 1, 2, 3, 4, 3, 4, 5, 5, 6, 6, 7, 8, 9]<br><br>The only thing that doesn&#39;t work (yet) is:<br>
<br>list(*item for item in L)<br><br>because the grammar gets confused about the &#39;*item&#39;. This is caused by the specialcasing that *args and **kwargs in functioncalls and -definitions really is. Since Guido wants to be able to do &#39;f(*a, b, c)&#39; (and presumably &#39;f(*a, *b, *c)&#39; too) that will all have to change anyway. However, changing this part of the grammar is, uhm, &quot;not as easy&quot;, so I need a couple of days.<br>
</div></div><br>-- <br>Thomas Wouters &lt;<a href="mailto:thomas@python.org">thomas@python.org</a>&gt;<br><br>Hi! I&#39;m a .signature virus! copy me into your .signature file to help me spread!