Is there a clever way to pass arguments

bruceg113355 at gmail.com bruceg113355 at gmail.com
Thu Aug 9 03:20:40 CEST 2012


On Wednesday, August 8, 2012 9:07:04 PM UTC-4, Dave Angel wrote:
> On 08/08/2012 08:41 PM, bruceg113355 at gmail.com wrote:
> 
> > Is there a way in Python to pass arguments without listing each argument?
> 
> > For example, my program does the following:
> 
> >
> 
> >     testData (z[0], z[1], z[2], z[3], z[4], z[5], z[6], z[7])
> 
> >
> 
> > Is there a clever way to pass arguments in a single statement knowing that each argument is a sequential index from a list?
> 
> > I cannot change the function definition.
> 
> >
> 
> > Thanks,
> 
> > Bruce
> 
> If a function is expecting exactly 8 arguments, and z is a list of
> 
> length 8, you can call the function like:
> 
> 
> 
>      testData(*z)
> 
> 
> 
> if z is longer, then you'd need something like (untested)
> 
>     testData(*z[:8])
> 
> 
> 
> The * basically turns a list into separate arguments, and these are then
> 
> applied to the formal parameters.
> 
> 
> 
> -- 
> 
> 
> 
> DaveA








Dave, your solution works!

def testData (z0, z1, z2, z3, z4, z5, z6, z7):
    print (z0, z1, z2, z3, z4, z5, z6, z7)
    
z = []
z.append(0)
z.append(1)
z.append(2)
z.append(3)
z.append(4)
z.append(5)
z.append(6)
z.append(7)

testData(*z[:8])

Thank you,
Bruce



More information about the Python-list mailing list