[Georg] > >> >>> a, *b, c = range(5) > >> >>> a > >> 0 > >> >>> c > >> 4 > >> >>> b > >> [1, 2, 3]
[Guido] > > Has it been pointed out to you already that this particular example is > > hard to implement if the RHS is an iterator whose length is not known > > a priori? The implementation would have to be quite hairy -- it would > > have to assign everything to the list b until the iterator is > > exhausted, and then pop a value from the end of the list and assign it > > to c. [Georg] > Yes, that is correct. My implementation isn't *that* hairy, though, it's > only 13 lines of code more. OK. The PEP was kind of light on substance here. Glad you've thought about it. > I'll post the patch to SourceForge later today. Cool. > > it would be much easier if *b was only allowed at the end. (It > > would be even worse if b were assigned a tuple instead of a list, as > > per your open issues.) > > The created tuple is a fresh one, so can't I just copy pointers like from a > list and set ob_size later? Sure. > > Also, what should this do? Perhaps the grammar could disallow it? > > > > *a = range(5) > > I'm not so sure about the grammar, I'm currently catching it in the AST > generation stage. Hopefully it's possible to only allow this if there's at least one comma? In any case the grammar will probably end up accepting *a in lots of places where it isn't really allowed and you'll have to fix all of those. That sounds messy; only allowing *a at the end seems a bit more manageable. But I'll hold off until I can shoot holes in your implementation. ;-) -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com