ジェネレータの製品に対して、対角を除いて繰り返し処理する必要があります。単一のiterableからジェネレータの製品そのもの
戻りn個の独立したイテレータ:私は二回
def pairs_exclude_diagonal(it): i1, i2 = itertools.tee(it, 2) for x in i1: for y in i2: if x != y: yield (x, y)
これは
In [1]: for (x, y) in pairs_exclude_diagonal(range(3)): ...: print(x, y) 0 1 0 2
documentation for tee状態を動作しません同じジェネレータを消費する
itertools.tee
を使用しようとしています。
これを行うには適切な方法はありますか?
(私はpython3.6.1を使用しています)
私は何とか私が「製品」を試してみたのと同じ問題を抱えていたことが私の頭の中にありました。ちょうど試してみて、うまく動作します。 DoH。 –
また、もちろんit2を2度使用しています。それを指摘してくれてありがとう。 –
'product'に' repeat = 2'を使わない限り、このレシピのアンパックエラーが出ます。これはあなたのためのものですか? – SethMMorton