On 11/21/2017 3:54 AM, Kirill Balunov wrote:
Hello. Currently during star assignement the new list is created.
What was the idea to produce new list instead of returning an iterator?
It seems to me that returning an iterator more suited to the spirit of
Python 3.
There are three cases:
1. a,b,c,*d = something_iterable
2. *a,b,c,d = something_iterable
3. a,*b,c,d = something_iterable
The first one is obvious.
Right, and easily dealt with with current Python.
d = iter(something iterable)
a,b,c = islice(d, 3) (or 3 next(d) calls)
More typical is to pull one item off the iterator with next(), as is
optionally done with csv readers.
it = iter(iterable)
header = next(it) # such as column names
for item in it: process(item)
For the rest two we always need to iterate
through
entire iterable to achieve values for b,c,d (or c,d) binding. But this
can be done
more memory effiecient than currently (may be I'm wrong).
For the general case, there is no choice but to save in a list.
--
Terry Jan Reedy
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/