Patches item #1492509, was opened at 2006-05-21 11:06 Message generated for change (Comment added) made by collinwinter 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: Closed >Resolution: Rejected Priority: 5 Private: No 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: Collin Winter (collinwinter) Date: 2007-03-07 18:09 Message: Logged In: YES user_id=1344176 Originator: NO This was rejected by the BDFL in http://mail.python.org/pipermail/python-dev/2006-May/065090.html; closing. ---------------------------------------------------------------------- Comment By: Heiko Wundram (hwundram) Date: 2006-05-24 02: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 16: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 15: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 _______________________________________________ Patches mailing list Patches@python.org http://mail.python.org/mailman/listinfo/patches