ページへ戻る

− Links

 印刷 

Python​/itertoolsでループを効率化 のバックアップ差分(No.1) :: NJF Wiki

xpwiki:Python/itertoolsでループを効率化 のバックアップ差分(No.1)

  Next »[4]
1: 2017-05-17 (水) 07:04:44 njf[5] ソース[6] バックアップ No.1 を復元して編集[7]
Line 1: Line 1:
 +*itertoolsとは [#qf74f599]
 +プログラムを書いていると、よく多重ループを使う場面が出てきます。
 +例えば、3重ループなら
 +
 + for i in range(2):
 +     for j in range(2):
 +         for k in range(2):
 +             print i,j,k
 +
 +というような物です。
 +3重ぐらいなら特に手で書いても問題ありませんが、それ以上だとネストが深くなって大変です。または何重かわかっていない場合などはそもそも手で書く事はできません。
 +
 +他の言語ではそのような場合、再帰関数を使うのが一般的で、Pythonでも同様のことが出来ます。
 +例えば以下のような関数で、上の多重ループと全く同じ処理が出来ます。
 +
 + def loopFunction(maxLen,maxLoop,loopList = []):
 +     if len(loopList) < maxLoop:
 +         for i in range(maxLen):
 +             l = list(loopList)
 +             l.append(i)
 +             loopFunction(maxLen,maxLoop , l)
 +     else:
 +         for i in loopList:
 +             print i,
 +         print
 + loopFunction(2, 3)
 +
 +この方法だと、好きな数の多重ループも出来ます。
 +しかし、見ての通り、ちょっとコードが複雑になりすぎてしまいます。
  Next »[4]