久しぶりのPythonネタ
大量のCSVデータを処理したりしていると、陥りがちなのが多重forループ。
for i in range(10): for j in range(10): for k in range(10): for l in range(10): for m in range(10): for n in range(10): ・・・
多重forループの欠点を上げると、とにかく見づらい。
Pythonは処理範囲を括弧ではなく、インデントで表現するので、どんどん画面右にずれていきます。
これがノートPCで作業しないといけない場面で、非常に見づらいのです。
何か良い方法はないか?
やはりみんな悩むところは同じらしく、
ネットで調べてみると、いろいろな方法が挙げられています。
その中で最も気になったのがitertoolsを使う方法です。
itertools
使ったことがなかったのですが、python標準のモジュールで追加で何かをインストールする必要はありません。
itertoolsを使うとこんな感じに書けます。
import itertools all_nums = itertools.product(range(2),range(3),range(4)) for i in all_nums: print(i) ----- (0, 0, 0) (0, 0, 1) (0, 0, 2) (0, 0, 3) (0, 1, 0) (0, 1, 1) (0, 1, 2) (0, 1, 3) (0, 2, 0) (0, 2, 1) (0, 2, 2) (0, 2, 3) (1, 0, 0) (1, 0, 1) (1, 0, 2) (1, 0, 3) (1, 1, 0) (1, 1, 1) (1, 1, 2) (1, 1, 3) (1, 2, 0) (1, 2, 1) (1, 2, 2) (1, 2, 3)
お~~~♪すっきり。