2019年5月11日土曜日

itertools product

複数のリストの直積集合(cartesian product)を作りたい場合がある。 例えば複数の項目に対してそれぞれ選択肢がいくつかある場合に、それらを虱潰しに探索したい、というケース。 個の要な場合Pythonではitertools の product を使う。簡単。 うーん簡単。自分で実装しちゃったよ。結構面倒だったのに。
In [5]: for a, b, c in itertools.product([1,2,3], ['a', 'b', 'c'], ['x', 'y', 'z']):
   ...:     print(a, b,c)
1 a x
1 a y
1 a z
1 b x
1 b y
1 b z
1 c x
1 c y
1 c z
2 a x
2 a y
2 a z
2 b x
2 b y
2 b z
2 c x
2 c y
2 c z
3 a x
3 a y
3 a z
3 b x
3 b y
3 b z
3 c x
3 c y
3 c z

0 件のコメント: