質問: 連投になります。前の質問と関連していることなのですが、 `[[0, 1, 2], [0, 1, 2]]`のようなリストがあったとして、 これを、`itertools.product(*iterables)`に入れる。 このままだと、`[0,1,2]`と`[0,1,2]`は別別にいれなければ ならない、あるいは私はこの方法しか知りません。 このままだと、2つだから、インデックスを2つ指定すれば いいんじゃないかと思われるかもしれませんが、例えば、 上のリストがどのような内容であっても、同様に行いたい。 事前にリストの長さはわからないものとします。 一気にすべての要素を引数に入れたいのですが、 そのような方法は可能でしょうか? 環境: python 3.6.3
回答: 以下のように書けます ``` >>> import itertools >>> list(itertools.product([0, 1, 2], [0, 1, 2])) [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] >>> list(itertools.product(*[[0, 1, 2], [0, 1, 2]])) [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] >>> iterables = [[0, 1, 2], [0, 1, 2]] >>> list(itertools.product(*iterables)) [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] ``` `*` の使い方は以下のドキュメントにあります。