Hello NG,

I am wondering if there were proposals or previous disscussions in this 
NG considering using 'while' in comprehension lists

# pseudo code
i=2
lst=[i**=2 while i<1000]

of course this could be easily rewritten into
i=2
lst=[]
while i<1000:
        i**=2
        lst.append(i)



usually I would prefer one liners like
lines=[line.strip() for line in file("foo").readlines() if line]
they make the purpose clear
so if 'while' were allowed in comprehension list this would allow
to write concise code

to the example above, I tried a workaround
i=2
lst=[i**=2 for _ in iter(lambda:_<1000, False)]

but this failes with SyntaxError because of i**=2
and must be also rewritten into

 >>> i=2
 >>> def f():
...     global i
...     i**=2
...     return i
...
 >>> lst=[f() for _ in iter(lambda:i<1000, False)]
 >>> lst
[4, 16, 256, 65536]

I think this loses compared with
i=2
lst=[i**=2 while i<1000]

Regards, Daniel

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

Reply via email to