[Python-ideas] Star assignment in iterator way?
Terry Reedy
tjreedy at udel.edu
Tue Nov 21 13:13:01 EST 2017
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
More information about the Python-ideas
mailing list