"Ron" <[EMAIL PROTECTED]> wrote:

> How would this examples work?
>
> for x=5,y,z in (123),(4,5),(6,7,8,9)
>
> Would the x default over ride the first value?
> Should, the 4 element in the third tuple be dropped without an error?

It has already been clarified twice in the thread that the default values would 
be allowed *only in
the end*, exactly as default function arguments.

> A  general reusable function might be something like this:
>
> def formatlistofargs(arglist, nargs=1, defvalue=0):
>     returnvalues = []
>     for i in arglist:
>         ii = list(i)
>         while len(ii)<nargs:
>             ii.append(defvalue)
>         ii=ii[:nargs]
>         returnvalues.append(ii)
>     return returnvalues
>
> for x,y,z in formatlistofargs(((1,2,3),(3,4),(5,6,7,8)),3):
>     print x,y,z

Of course there are ways to have a function fill in the defaults, but 
syntactically I would find
"for (x,y,z=0) in (1,2,3), (4,5), (6,7,8): print x,y,z" more obvious and 
concise.

By the way, I don't think it's a good idea in general to drop the extra values 
implicitly, as you do
in your recipe, for the same reason that calling a function foo(x,y,z) as 
foo(1,2,3,4) is an error.
A generalization of the 'for .. in' syntax that would handle extra arguments 
the same way as
functions would be:

for (x,y,z=0,*rest) in (1,2,3), (3,4), (5,6,7,8):
     print x, y, z, rest

I'd love to see this in python one day; it is pretty obvious what it would do 
for anyone familiar
with function argument tuples.

George


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

Reply via email to