Mailing List Archive

Is there a clever way to pass arguments
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
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On 09/08/2012 01:41, bruceg113355@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
>

testData(*z)

assuming that there are exactly 8 entries in z

see
http://docs.python.org/dev/tutorial/controlflow.html#more-on-defining-functions

~Andrew
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On 08/08/2012 08:41 PM, bruceg113355@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

--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On Wednesday, August 8, 2012 9:07:04 PM UTC-4, Dave Angel wrote:
> On 08/08/2012 08:41 PM, bruceg113355@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
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On Wednesday, August 8, 2012 9:07:04 PM UTC-4, Dave Angel wrote:
> On 08/08/2012 08:41 PM, bruceg113355@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
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On Wed, 08 Aug 2012 18:20:40 -0700, bruceg113355 wrote:

> 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)

That can be written as:

z = [0, 1, 2, 3, 4, 5, 6, 7]

Or better still:

z = range(8) # In Python 3, use list(range(8)) instead.



--
Steven

--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
bruceg113355@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
>
testData(*z)

or better (imo)

testData(z) and make testData handle a list (8 parameters, that's a lot
of parameters).

JM

--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On Thu, Aug 9, 2012 at 7:05 PM, Jean-Michel Pichavant
<jeanmichel@sequans.com> wrote:
> bruceg113355@gmail.com wrote:
>>
>> I cannot change the function definition.
>
> or better (imo)
> testData(z) and make testData handle a list (8 parameters, that's a lot of
> parameters).

He can't change the function definition.

ChrisA
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
Chris Angelico wrote:
> On Thu, Aug 9, 2012 at 7:05 PM, Jean-Michel Pichavant
> <jeanmichel@sequans.com> wrote:
>
>> bruceg113355@gmail.com wrote:
>>
>>> I cannot change the function definition.
>>>
>> or better (imo)
>> testData(z) and make testData handle a list (8 parameters, that's a lot of
>> parameters).
>>
>
> He can't change the function definition.
>
> ChrisA
>
my bad

JM
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On Thu, 09 Aug 2012 19:13:31 +1000, Chris Angelico wrote:

> On Thu, Aug 9, 2012 at 7:05 PM, Jean-Michel Pichavant
> <jeanmichel@sequans.com> wrote:
>> bruceg113355@gmail.com wrote:
>>>
>>> I cannot change the function definition.
>>
>> or better (imo)
>> testData(z) and make testData handle a list (8 parameters, that's a lot
>> of parameters).
>
> He can't change the function definition.
>
> ChrisA

True but it is still worth highlighting that the function definition may
not be ideal depending on the requirements of the function.
some people read these threads to learn general concepts & not to find
answers to a single explicit case.



--
I want to so HAPPY, the VEINS in my neck STAND OUT!!
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
Alister wrote:

[putolin]

> some people read these threads to learn general concepts & not to find
> answers to a single explicit case.

Some people (me) don't know the first thing about python and are in the
learning/exploratory phase.

--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there a clever way to pass arguments [ In reply to ]
On 8/9/2012 5:50 AM, Jean-Michel Pichavant wrote:
> Chris Angelico wrote:
>> On Thu, Aug 9, 2012 at 7:05 PM, Jean-Michel Pichavant
>> <jeanmichel@sequans.com> wrote:
>>> bruceg113355@gmail.com wrote:
>>>> I cannot change the function definition.
>>> or better (imo)
>>> testData(z) and make testData handle a list (8 parameters, that's a
>>> lot of
>>> parameters).
>>
>> He can't change the function definition.

One can always wrap a function with an adaptor if the signature is too
awful.

--
Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list