クラスを定義する。
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地味に便利。
コメント