strange syntax rules on list comprehension conditions

Dustan DustanGroups at gmail.com
Sat Jan 19 00:44:42 CET 2008


On Jan 18, 1:04 pm, "Chris Mellon" <arka... at gmail.com> wrote:
> On Jan 18, 2008 12:53 PM, Nicholas <nicholasinpa... at gmail.com> wrote:
>
> > I was quite delighted today, after extensive searches yielded nothing, to
> > discover how to place an else condition in a list comprehension.
> > Trivial mask example:
> > >>> [True if i <5 else False for i in range(10)]       # A
> > [True, True, True, True, True, False, False, False, False, False]
>
> > I then experimented to drop the else statement which yields an error
> > >>> [i if i>3 for i in range(10)]

That would be:

[i for i in range(10) if i>3]

> > Traceback (  File "<interactive input>", line 1
> > this syntax works of course
> > >>> [i if i>3 else i for i in range(10)]
> > [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



More information about the Python-list mailing list