beginner wrote: > On Jul 25, 10:19 am, Stargaming <[EMAIL PROTECTED]> wrote: >> On Wed, 25 Jul 2007 14:50:18 +0000, beginner wrote: >>> Hi, >>> I am wondering how do I 'flatten' a list or a tuple? For example, I'd >>> like to transform[1, 2, (3,4)] or [1,2,[3,4]] to [1,2,3,4]. >> A recursive function, always yielding the first element of the list, >> could do the job. See the ASPN Python Cookbook for a few >> implementations.http://aspn.activestate.com/ASPN/search? >> query=flatten§ion=PYTHONCKBK&type=Subsection >> >>> Another question is how do I pass a tuple or list of all the aurgements >>> of a function to the function. For example, I have all the arguments of >>> a function in a tuple a=(1,2,3). Then I want to pass each item in the >>> tuple to a function f so that I make a function call f(1,2,3). In perl >>> it is a given, but in python, I haven't figured out a way to do it. >>> (Maybe apply? but it is deprecated?) >>>>> def foo(a, b, c): print a, b, c >> ... >>>>> t = (1, 2, 3) >>>>> foo(*t) >> 1 2 3 >> >> Have a look at the official tutorial, 4.7.4http://www.python.org/doc/ >> current/tut/node6.html#SECTION006740000000000000000 >> >>> Thanks, >>> cg >> HTH, >> Stargaming > > Hi Stargaming, > > I know the * operator. However, a 'partial unpack' does not seem to > work. > > def g(): > return (1,2) > > def f(a,b,c): > return a+b+c > > f(*g(),10) will return an error. > > Do you know how to get that to work? > > Thanks, > cg > >
Were this not hypothetical, I would make use of the commutative property of addition: f(10, *g()) Proof: 1+2+10 = 10+1+2 Also, this has not been suggested: py> def g(): ... return (1,2) ... py> def f(a,b,c): ... return a+b+c ... py> f(c=10, *g()) 13 James -- http://mail.python.org/mailman/listinfo/python-list