Python: リストを2個ずつ巡回する


Python: How to iterate through a list by two

it = range(10)
for a, b in zip(it, it):
    print('{} + {} = {}'.format(a, b, a + b))

一瞬これでいけるかな?と思うも

0 + 0 = 0
1 + 1 = 2
2 + 2 = 4
3 + 3 = 6
4 + 4 = 8
5 + 5 = 10
6 + 6 = 12
7 + 7 = 14
8 + 8 = 16
9 + 9 = 18

となるところ、ここに一行足して

it = range(10)
itit = iter(it)
for a, b in zip(itit, itit):
    print('{} + {} = {}'.format(a, b, a + b))

とすると

0 + 1 = 1
2 + 3 = 5
4 + 5 = 9
6 + 7 = 13
8 + 9 = 17

となる。
iter(it) がポイント。
Iterator にすると内部状態を保持する兼ね合いでこういうことが起きるという感じか。(雑です)
Python 2の場合は itertools.izip とかを使う、たぶん。


Leave a Reply

Your email address will not be published. Required fields are marked *