iterating "by twos"
George Trojan
george.trojan at noaa.gov
Tue Jul 29 13:58:05 EDT 2008
kj wrote:
> Is there a special pythonic idiom for iterating over a list (or
> tuple) two elements at a time?
>
> I mean, other than
>
> for i in range(0, len(a), 2):
> frobnicate(a[i], a[i+1])
>
> ?
>
> I think I once saw something like
>
> for (x, y) in forgotten_expression_using(a):
> frobnicate(x, y)
>
> Or maybe I just dreamt it! :)
>
> Thanks!
I saw the same thing, forgot where though. But I put it in my library.
Here it is:
# x.py
import itertools
def pairs(seq):
is1 = itertools.islice(iter(seq), 0, None, 2)
is2 = itertools.islice(iter(seq), 1, None, 2)
return itertools.izip(is1, is2)
s = range(9)
for x, y in pairs(s):
print x, y
dilbert at trojan> python x.py
0 1
2 3
4 5
6 7
More information about the Python-list
mailing list