[Tutor] iterating over less than a full list

Steven D'Aprano steve at pearwood.info
Sat Sep 4 20:45:08 CEST 2010


On Sun, 5 Sep 2010 03:14:24 am Bill Allen wrote:
> Say I have and iterable called some_stuff which is thousands of items
> in length and I am looping thru it as such:
>
> for x in some_stuff
>      etc...
>
> However, what if I want only to iterate through only the first ten
> items of some_stuff, for testing purposes.  Is there a concise way of
> specifying that in the for statement line?

The Pythonic way is to use itertools.islice.


import itertools

for x in itertools.islice(some_stuff, 10):
    blah blah blah


will stop at the end of some_stuff, or after 10 items, whichever happens 
first.

islice() optionally takes the full set of arguments that ordinary list 
slicing takes, so that islice(iterable, start, end, stride) is nearly 
the same as list(iterable)[start:end:stride].


-- 
Steven D'Aprano


More information about the Tutor mailing list