Steve Holden wrote: >>>>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) >>>> >>> ... > Don't you have an interpreter you could run the code in to verify that > it does indeed loop interminably? You seem to be assuming that the > expression i**2 changes the value of i. It doesn't.
I think that like me you read 'i**2' when the OP actually wrote 'i**=2'. i**=2 will change the value of i in the conventional while loop. In the list comprehension it is of course a syntax error even if you assume list comprehensions are expanded to allow the while. -- http://mail.python.org/mailman/listinfo/python-list