2017-11-27 17:14 GMT+03:00 Chris Angelico <ros...@gmail.com>: > > > Nah, far easier: > > x, y = iter(it) >
Yes, you are right. >> 2. Readable and not so verbose code > >> 3. Optimized case for x,y,*z = iterator > > > > The semantics of that are already set: the first two items are assigned > > to x and y, with all subsequent items assigned to z as a list. How will > > this change optimize this case? It still needs to run through the > > iterator to generate the list. > > Maybe 'optimized case for "x, y, *_ = iterator" where you then never > use _ and it has no side effects'? But that could be worded better. > Yes, you did not need to consume and then to throw out _, and in other cases not to hang in an endless loop. > I do think islice is verbose, but the main problem is that you have to > match the second argument to the number of assignment targets. Slice > notation is an improvement, but it still has that same problem. > > But perhaps this should be added to the list of options for the PEP. > Inconvenience is that in both cases: islice and iter[:2], you should specify the exact number of assignment targets. > That's one of the options that I mentioned, as it's been proposed in > the past. The problem is that it depends on internal whitespace to > distinguish it from augmented assignment; granted, there's no way to > use "*=" with multiple targets (or even in the single-target case, you > can't do "x,*=it" with the comma in it), but that's still a > readability problem. > Your suggestion using Ellipsis at the moment seems to me the most readable, like: x, ... = iterable x, y, ... = iterable But I have not summed up yet what pitfalls can be on this path. I really do not like to use "starred" targets in any way: x, y, * = iterable x, y, *... Because any "starred" target implies consuming or collecting, and contradicts with the proposed behavior. With kind regards, -gdg
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/