Needless copying in iterations?
James Stroud
jstroud at mbi.ucla.edu
Sat Sep 15 18:20:45 EDT 2007
buffi wrote:
> On Sep 15, 11:58 pm, James Stroud <jstr... at mbi.ucla.edu> wrote:
>> Hello all,
>>
>> I was staring at a segment of code that looked like this today:
>>
>> for something in stuff[x:y]:
>> whatever(something)
>>
>> and was wondering if the compiler really made a copy of the slice from
>> stuff as the code seems to suggest, or does it find some way to produce
>> an iterator without the need to make a copy (if stuff is a built-in
>> sequence type)? Or would it be more efficient to do the more clumsy (in
>> my opinion):
>>
>> for i in xrange(x, y):
>> whatever(stuff[i])
>>
>> James
>
> itertools.islice does what you want
>
> import itertools
> for something in itertools.islice(stuff, x, y):
> whatever(something)
>
Thanks buffi!
So I guess the interpreter does no optimization in the latter?
James
More information about the Python-list
mailing list