【Python】入れ子構造を使わない多重ループの書き方
Pythonのfor
文でitertools.product()
関数を使うと、for
文を入れ子構造にすることなく多重ループ処理を行うことができる。
Pythonではインデントがfor
文のループ処理のブロックを表すので、for
文が入れ子構造になればなるほどインデントが深くなりがちだが、これを使うと一つのfor
文で多重ループを実装できるのでコードの見た目がすっきりする。
>>> import itertools >>> l1 = [1, 2] >>> l2 = ['a', 'b'] >>> l3 = ['one', 'two', 'three'] >>> for i, j, k in itertools.product(l1, l2, l3): ... print(i, j, k) ... 1 a one 1 a two 1 a three 1 b one 1 b two 1 b three 2 a one 2 a two 2 a three 2 b one 2 b two 2 b three >>>