According to http://en.wikipedia.org/wiki/Expression_(programming)
"An expression in a programming language is a combination of values, variables, operators, and functions that are interpreted (evaluated) according to the particular rules of precedence and of association for a particular programming language, which computes and then produces (returns, in a stateful environment) another value." l.__delslice__(0,len(l)) is an expression because it returns None [which also happens to be a value] in this case. On May 16, 4:23 am, castironpi <[EMAIL PROTECTED]> wrote: > On May 15, 6:07 pm, afrobeard <[EMAIL PROTECTED]> wrote: > > > > > 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- Hide quoted text - > > > - Show quoted text - > > In your original, you have: > > > l = range(6) > > [1 if b!=4 else l.__delslice__(0,len(l)) for b in l][:-1] > > You may be hyperextending the use of '..if..else..', which is one of > my fears regarding 'with x as y'. "l.__delslice__(0,len(l))" is not > an expression. -- http://mail.python.org/mailman/listinfo/python-list