else condition in list comprehension
Anthony
anthony.briggs at gmail.com
Tue Jan 11 10:28:36 EST 2005
On Mon, 10 Jan 2005 09:13:17 -0700, Steven Bethard
<steven.bethard at gmail.com> wrote:
> Luis M. Gonzalez wrote:
> > It's me wrote:
> >>> z = [i + (2, -2)[i % 2] for i in range(10)]
> >>
> >> But then why would you want to use such feature? Wouldn't that make
> >> the code much harder to understand ...
> >> Or are we trying to write a book on "Puzzles in Python"?
> >
> > Once you get used to list comprehensions (and it doesn't take long),
> > they are a more concise and compact way to express these operations.
>
> After looking the two suggestions over a couple of times, I'm still
> undecided as to which one is more readable for me. The problem is not
> the list comprehensions (which I love and use extensively). The problem
> is the odd syntax that has to be used for an if/then/else expression in
> Python.
They're both pretty unreadable, IMHO. Why not just factor out the
if/then/else function like this:
.def plusMinusTwo(i):
. if i%2 == 0:
. return i-2
. else:
. return i+2
.
.z = [plusMinusTwo(i) for i in range(10)]
Then you can add whatever you like into the function.
Anthony
--
-----------------------------------------------------
HyPEraCtiVE? HeY, WhO aRE YoU cALliNg HypERaCtIve?!
aNthONy.BrIGgS at gmAiL.CoM
-----------------------------------------------------
More information about the Python-list
mailing list