On 11/22/2014 06:20 PM, Chris Angelico wrote: > On Sun, Nov 23, 2014 at 11:05 AM, Ron Adam<ron3200 at gmail.com> wrote: >> >Se we have these... >> > >> > Tuple Comprehension (...) >> > List Comprehension [...] >> > Dict Comprehension {...} Colon make's it different from sets. >> > Set Comprehension {...} >> > >> >I don't think there is any other way to create them. And they don't actually >> >expand to any python code that is visible to a programmer. They are self >> >contained literal expressions for creating these few objects. > Hmmm, there's no such thing as tuple comprehensions. Just didn't think it through quite well enough. But you are correct, that would be a generator expression. One less case to worry about. :-) > lst = [1,2,3,4] # not a comprehension > even = [n*2 for n in lst] # comprehension > >> >Here is what I think(?) list comps do currently. >> > >> > lst = [expr for items in itr if cond] >> > >> >Is the same as. >> > >> > lst = [] >> > for x in itr: # StopIteration caught here. >> > if cond: # StopIteration bubbles here. >> > lst.append(expr) # StopIteration bubbles here. > Pretty much. It's done in a nested function (so x doesn't leak), but > otherwise, yes. >> >And it would be changed to this... >> > >> > def comp_expression(): >> > for x in itr: # StopIteration caught here. >> > if cond: >> > list.append(expr) >> > >> > # StopIteration from cond and expr caught here. >> > lst = list(x for x in comp_expression()) > That wouldn't quite work, but this would: Right, the list.append() should be a yield(expr). > def <listcomp>(): > ret = [] > try: > for x in itr: > if cond: > ret.append(x) > except StopIteration: > pass > return ret > lst = <listcomp>() > > (And yes, the name's syntactically illegal, but if you look at a > traceback, that's what is used.) That's fine too. The real question is how much breakage would such a change make? That will probably need a patch in order to test it out. Cheers, Ron
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4