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

Reply via email to