The following proposed solution is not intended to be a solution, it goes completely against the zen of python. [Type import this into the python command interpreter]
I brought it down to two lines:- l = range(6) [1 if b!=4 else l.__delslice__(0,len(l)) for b in l][:-1] itertools would still be a better approach in my opinion. Just because I'm curious to know, can anyone bring it shorter[even if its cryptic] than this without invoking any Python Library. P.S. Once again I would not recommend using this as Explicit is better than Implicit P.P.S. It is strongly undesirable for us humans to use anything starting with __ :) On May 15, 5:10 pm, "Geoffrey Clements" <[EMAIL PROTECTED]> wrote: > "urikaluzhny" <[EMAIL PROTECTED]> wrote in message > > news:[EMAIL PROTECTED] > On May 15, 10:06 am, "Terry Reedy" <[EMAIL PROTECTED]> wrote: > > > "urikaluzhny" <[EMAIL PROTECTED]> wrote in message > > >news:[EMAIL PROTECTED] > > | It seems that I rather frequently need a list or iterator of the form > > | [x for x in <> while <>] > > > I can think of two ways to interpret that. > >> I mean like [x for x in <A> if <B>], only that it breaks the loop when > >> the expression <B> is false. > > def gen(a): > for x in a: > if B: break > yield x > > a_gen = gen(A) > > # now iterate over a_gen > > -- > Geoff -- http://mail.python.org/mailman/listinfo/python-list