Iterator for circulating a list
Carsten Haese
carsten at uniqsys.com
Tue Nov 13 09:43:02 EST 2007
On Tue, 2007-11-13 at 15:12 +0100, BJörn Lindqvist wrote:
> L = somelist
>
> idx = 0
> while True:
> item = L[idx]
> # Do something with item
> idx = (idx + 1) % len(L)
>
> wouldn't it be cool if there was an itertool like this:
>
> def circulate(L, begin = 0, step = 1):
> idx = begin
> while True:
> yield L[idx]
> idx = (idx + step) % len(L)
>
> for x in circulate(range(10)):
> print 'at', x,'!'
For begin=0 and step=1, itertools.cycle does exactly that. For arbitrary
offsets or different steps, you'd have to combine cycle with islice.
--
Carsten Haese
http://informixdb.sourceforge.net
More information about the Python-list
mailing list