[BangPypers] A doubt in list comprehension

Shashwat Anand anand.shashwat at gmail.com
Sat Sep 12 04:54:01 CEST 2009


@srid: got it, thanks

normal codes are just nice, it's like i wanted to go through some
list-comprehension which makes the code a bit obsfucated. Atleast i should
be able to write my own and understand others.

Got a nice link too, wanted to share it :)

Thanks for the help !

"""

A list comprehension has the following syntax:

[ *expression* for *target* in *iterable* *lc-clauses* ]

*target* and *iterable* are the same as in a regular for statement. You must
enclose the *expression* in parentheses if it indicates a tuple.

*lc-clauses* is a series of zero or more clauses, each with one of the
following forms:

for *target* in *iterable*
if *expression*

*target* and *iterable* in each for clause of a list comprehension have the
same syntax as those in a regular for statement, and the *expression* in
each if clause of a list comprehension has the same syntax as the *
expression* in a regular if statement.

courtesy ~
http://docstore.mik.ua/orelly/other/python/0596001886_pythonian-chp-4-sect-9.html
"""

On Sat, Sep 12, 2009 at 7:48 AM, srid <sridhar.ratna at gmail.com> wrote:

> On Fri, Sep 11, 2009 at 4:57 PM, Shashwat Anand
> <anand.shashwat at gmail.com> wrote:
> > However what if I want an if-else loop in nested for loop.
>
> Are you referring to this:
>
>   ['EVEN' if x%2==0 else 'ODD' for x in range(10)]
>
> > for i in range(10):
> >     for j in range(10):
> >         for k in range(10):
> >             if i == j and j == k:
> >                 print "All equal"
> >             elif (i == j and j != k) or (i == k and j != k):
> >                 print "2 equal"
> >             else:
> >                 print "None equal"
>
> If you are asking how to achieve the above code using list
> comprehensions, then try
>
>    return ["All equal" if i==j and j==k else (
>                    "2 equal" if (i==j and j!=k) or (i==k and j!=k) \
>                            else "None equal")
>            for i in range(10)
>            for j in range(10)
>            for k in range(10)]
>
> For convenience, I pasted the code here: http://gist.github.com/185695
>
> Speaking personally, your original code is just fine - it is simpler
> than the list comprehension version above.
>
> -srid
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/bangpypers/attachments/20090912/98cd78ab/attachment-0001.htm>


More information about the BangPypers mailing list