いずみのメモ帳

見たこと感じたことを書き残しておきたい。

【Python】入れ子構造を使わない多重ループの書き方

Pythonfor文で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
>>>