<br><br><div class="gmail_quote">On Fri, Mar 1, 2013 at 2:24 PM, Per Nielsen <span dir="ltr">&lt;<a href="mailto:evilper@gmail.com" target="_blank">evilper@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all<div><br></div><div>I apologize if this is too off topic, but I figured it was common in scientific computing.</div><div><br></div><div>I am trying to make a list of copies of the same function, but with different extra input arguments. However, I am having problems getting the wanted output. I thought it was a problem with the way I refered to the function, but I tried a deepcopy and also the functions seem to have different ids.</div>


<div><br></div><div>Here is my output from the attached script:</div><div><br></div><div><div>simple</div><div>[3, 3, 3]</div><div>[4549677376, 4549677496, 4549677616]</div><div>deepcopy</div><div>[3, 3, 3]</div><div>[4549677736, 4549677856, 4549677976]</div>


<div>wanted/expected output: [1, 2, 3]</div></div><div><br></div><div>Any help would be greatly appreciated :)</div><div><br></div><div>Cheers,</div><div>Per</div>
<br></blockquote><div><br><br>The problem is this:<br><br><span style="font-family:courier new,monospace">fct_list = [lambda x: fct(x, aa) for aa in range(1, 4)]</span><br><br>does not do what you want it to.  The use of `aa` in the lambda expression is not replaced by the values of `aa` in the list comprehension.  Instead, your lambdas will use whatever value the name &#39;aa&#39; has when they are called.  In this case, after the list comprehension is done, `aa` is 3, so they always get a=3.  In fact, if immediately after you define `fct_list` you do `del aa`, you&#39;ll get an error when you try to call fct_list[0](1).<br>
<br>One alternative is to import `partial` from `functools`:<br><br><span style="font-family:courier new,monospace">from functools import partial<br>fct_list = [partial(fct, a=aa) for aa in range(1, 4)]</span><br><br><br>
Warren<br><br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_______________________________________________<br>
SciPy-User mailing list<br>
<a href="mailto:SciPy-User@scipy.org">SciPy-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-user" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-user</a><br>
<br></blockquote></div><br>