ページへ戻る

− Links

 印刷 

Python​/itertoolsでループを効率化 の変更点 :: NJF Wiki

xpwiki:Python/itertoolsでループを効率化 の変更点

« Prev[3]  
3: 2017-05-18 (木) 15:55:03 njf[4] ソース[5] バックアップ No.3 を復元して編集[6] 現: 2017-05-20 (土) 15:17:44 njf[4] ソース[7] 編集[8]
Line 10: Line 10:
というような物です。 というような物です。
-3重ぐらいなら特に手で書いても問題ありませんが、それ以上だとネストが深くなって大変です。または何重かわかっていない場合などはそもそも手で書く事はできません。+3重ぐらいなら特に手で書いても問題ありませんが、それ以上だとネスト(階層)が深くなって管理が大変です。または何重かわかっていない場合などはそもそも手で書く事はできません。
他の手続き型言語ではそのような場合、再帰関数を使うのが一般的で、Pythonでも同様のことが出来ます。 他の手続き型言語ではそのような場合、再帰関数を使うのが一般的で、Pythonでも同様のことが出来ます。
Line 25: Line 25:
             print i,              print i,
         print          print
 + 
 loopFunction(2, 3)  loopFunction(2, 3)
Line 34: Line 34:
 import itertools  import itertools
 + 
 for e in itertools.product(range(2),repeat=3):  for e in itertools.product(range(2),repeat=3):
     for i in e:      for i in e:
Line 48: Line 48:
*全ての組み合わせを生成する「product」 [#b9e52150] *全ての組み合わせを生成する「product」 [#b9e52150]
-itertoolsの中でも、特によく使うのはproductでしょう。これはベクトルやテンソルの解析で言うところの直積にあたるもので、引数に与えられた配列などの全ての可能な組み合わせを返します。+itertoolsの中でも、特によく使うのはproductでしょう。これは日本語で「積」を表す名前の通り、ベクトルやテンソルの解析で言うところの直積にあたるもので、引数に与えられた配列などの全ての可能な組み合わせを返します。
 for i in itertools.product("AB","DE"):  for i in itertools.product("AB","DE"):
« Prev[3]