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