クラスを定義する。
r を真にすると最後に先頭の値とペアを作る。
for文に放り込む。
class CombiIter(object):
def __init__(self, iterable, r=False):
self._iter = iterable
self._round = r
def __iter__(self):
it = iter(self._iter)
last = first = it.next()
for v in it:
yield (last, v)
last = v
if self._round:
yield (last, first)
r を真にすると最後に先頭の値とペアを作る。
list(CombiIter(range(5), r=True)) >> [(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)] list(CombiIter(range(5), r=False)) >> [(0, 1), (1, 2), (2, 3), (3, 4)]
for文に放り込む。
for v1, v2 in CombiIter(range(5), r=True):
print v1, v2
>> 0 1
>> 1 2
>> 2 3
>> 3 4
>> 4 0
地味に便利。
コメント