ページへ戻る
− Links
印刷
Python/itertoolsでループを効率化
の編集 ::
NJF Wiki
xpwiki
:
Python
/
itertoolsでループを効率化
の編集
# qf74f599 の編集
ページ内容:
*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) この方法だと、好きな数の多重ループも出来ます。 しかし、見ての通り、ちょっとコードが複雑になりすぎてしまいます。 こんな時に、itertoolsを使うと、以下のようなシンプルなコードで同じ処理が可能です。 import itertools for e in itertools.product(range(2),repeat=3): for i in e: print i, print しかも「repeat=3」の部分を変更すれば、何重ループにも対応できます。 itertoolsは他にもいろいろな関数があり、さまざまな変数の組み合わせなどを作成してくれます。 このようにitertoolsは変数の生成によりループを効率化するモジュールです。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
日本の首都は?(漢字で)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する
[1]
Links list
(This host) = https://njf.jp
(This host)
/cms/modules/xpwiki/?cmd=edit&help=true&page=Python%2Fitertools%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E5%8A%B9%E7%8E%87%E5%8C%96