pythonのitertoolsを使ってベクトル各要素の総当たりを行う方法
pythonでAというベクトルとBというベクトルがあった時に、その要素をA vs Bで総当たり的に計算させて最適解を求めたいという時に使えるツールを備忘です。
itertoolsというライブラリーを使います。
import itertools
以下のようにベクトルAとベクトルBの各要素で総当たりprintを行います。
結果は全組み合わせが表示されます。
A = ['1', '2', '3','4'] B = ['a', 'b', 'c','d'] for i, j in itertools.product(x, y): print(i, j)
output>
1 a
1 b
1 c
1 d
2 a
2 b
2 c
2 d
3 a
3 b
3 c
3 d
4 a
4 b
4 c
4 d
一方、同じベクトル同士で総当たりを行いたい場合もあると思います。
そんな時は以下のようにif文使ってワンクッションおいて、同じ要素同士の激突を避ければおっけです。
for i, j in itertools.product(x,x): if i != j: print(i, j)
output>
1 2
1 3
1 4
2 1
2 3
2 4
3 1
3 2
3 4
4 1
4 2
4 3