[Patches] [ python-Patches-1492509 ] Unification of list-comp and for syntax
SourceForge.net
noreply at sourceforge.net
Wed May 24 08:10:12 CEST 2006
Patches item #1492509, was opened at 2006-05-21 17:06
Message generated for change (Comment added) made by hwundram
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1492509&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Core (C code)
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: Heiko Wundram (hwundram)
Assigned to: Nobody/Anonymous (nobody)
Summary: Unification of list-comp and for syntax
Initial Comment:
The following patch adds the ability for:
for <expr> in <expr> if <expr>:
<do something>
to the Python core. This unifies the syntax of
list/generator comprehensions and the for statement
somewhat, because both now accept conditions which
produce an immediate continue.
I've posted a PEP to python-dev, which details the
changes this patch makes (which are all
backwards-compatible).
The patch doesn't try to address more than the actual
code required to make this feature work yet (except for
changes to Modules/parsermodule.c and Doc/ref/ref7.tex,
which details the for statement). If there's consensus
on this feature, I'll gladly produce more documentation.
----------------------------------------------------------------------
>Comment By: Heiko Wundram (hwundram)
Date: 2006-05-24 08:10
Message:
Logged In: YES
user_id=791932
Sure, you can wrap the iterable, or you can even do:
if x in y:
if not x:
continue
...
or
if x in y:
if x:
...
without using any form of "iterator magic". Read my PEP-xxx
on py-dev, and my explanation there of why I think this is a
"good thing"(TM), but I won't go explain it here again,
because generally people have told be to drop it.
----------------------------------------------------------------------
Comment By: Jim Jewett (jimjjewett)
Date: 2006-05-23 22:14
Message:
Logged In: YES
user_id=764593
It seems I misread what the intent was -- I was thinking of
the if as guarding the entire for loop, not just a single
iteration.
Because of this confusion, I have to be -1.
Is there a reason you can't just wrap your iterable
sequence with another iterator?
for x in (candidate for candidate in fullseq if test):
----------------------------------------------------------------------
Comment By: Jim Jewett (jimjjewett)
Date: 2006-05-23 21:53
Message:
Logged In: YES
user_id=764593
I'm not loving the interaction with conditional expressions.
for x in (1,2,3) if test else (3,2,1):
I suppose this techically isn't ambiguous because else is a
keyword.
On the other hand, you could do it now using he if-else
for x in real_seq if test else ():
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1492509&group_id=5470
More information about the Patches
mailing list