For loop extended syntax

Ron radam2 at tampabay.rr.com
Tue Mar 22 03:33:11 CET 2005


On Mon, 21 Mar 2005 15:56:26 -0500, "George Sakkis"
<gsakkis at rutgers.edu> 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









More information about the Python-list mailing list