3: 2017-05-18 (木) 15:55:03 njf[4] [5] [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, | ||
+ | |||
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"): |
(This host) = https://njf.jp