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