On Mon, 21 Mar 2005 15:56:26 -0500, "George Sakkis"
<[EMAIL PROTECTED]> wrote:
>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.
Was just asking if there should be other special general cases. What
programmers want usually depend on the problem at hand. imho :)
>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
I would probably do it this way myself:
def padlist(alist,length,pad):
alist[length:]=[pad]*(length-len(alist))
return alist
for xyz in [1,2,3],[3,4],[5,6,7]:
x,y,z = padlist(xyz, 3, 0)
print x,y,z
# or this if it's faster:
for x,y,z in [padlist(xyz,3,0) for xyz in [1,2,3],[3,4],[5,6,7]]:
print x,y,z
Which isn't too different from what you are suggesting. I think
someone may have already suggested using list comprehensions.
Ron
--
http://mail.python.org/mailman/listinfo/python-list