בתאריך יום ו׳, 14 באוק' 2016, 12:19, מאת Michel Desmoulin < desmoulinmic...@gmail.com>:
> Regarding all those examples: > > Le 14/10/2016 à 00:08, אלעזר a écrit : > > Trying to restate the proposal, somewhat more formal following Random832 > > and Paul's suggestion. > > > > I only speak about the single star. > > --- > > > > *The suggested change of syntax:* > > > > comprehension ::= starred_expression comp_for > > > > *Semantics:* > > > > (In the following, f(x) must always evaluate to an iterable) > > > > 1. List comprehension: > > > > result = [*f(x) for x in iterable if cond] > > > > Translates to > > > > result = [] > > for x in iterable: > > if cond: > > result.extend(f(x)) > > > > 2. Set comprehension: > > > > result = {*f(x) for x in iterable if cond} > > > > Translates to > > > > result = set() > > for x in iterable: > > if cond: > > result.update(f(x)) > > Please note that we already have a way to do those. E.G: > > result = [*f(x) for x in iterable if cond] > > can currently been expressed as: > > >>> iterable = range(10) > >>> f = lambda x: [x] * x > >>> [y for x in iterable if x % 2 == 0 for y in f(x)] > [2, 2, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8] > > > Now I do like the new extension syntax. I find it more natural, and more > readable: > > >>> [*f(x) for x in iterable if x % 2 == 0] > > But it's not a missing feature, it's really just a (rather nice) > syntaxic improvement. > It is about lifting restrictions from an existing syntax. That this behavior is being *explicitly disabled* in the implementation is a strong evidence, in my mind. (There are more restrictions I was asked not to divert this thread, which makes sense) Elazar
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/