●
変数の自動生成がしたい。
# variable0 = 0, variable1 = 1, みたいな変数を10個作りたい
# だけど10行書くのがクソ面倒くさいからこういうことがしたい
for foo in range(10):
variable + foo = foo
もちろんこれは出来ない。変数名と数字は足せないし、 foo
を文字列にしても無理。だったら文字列を変数名化すればいいんじゃね!? とこないだ得た知識の使いドコロかと思ったが、どうやら eval()
関数は式の左側には使えないっぽい。ぐぬぬ。
# これもできん。
for foo in range(10):
eval(variable + str(foo)) = foo
●
そこでディクショナリを使って変数もどきを作ることを思いついた。
# 変数もどき自動生成
dic = {}
for foo in range(10):
dic['variable' + str(foo)] = foo
# 使う時(variable7 を print する場合)
print(dic['variable7'])
ビューリホー…。ディクショナリって要素に順番って概念がなくて出力するとしっちゃかめっちゃかなので学習時は「クソだな」などと拙い感想をもったものだが全力でゴメンなさいさせてもらう。ディクショナリがなかったら100行書くハメになってた(上の例だと10だけど実際に扱ってるデータは100行ぶん必要だった)。 でちょっと思ったことなんだけど、ひょっとして変数のシステムってモロディクショナリなんじゃないか? 変数に順番は必要ないし、ディクショナリで言うところの key 名を指定すれば value を出してくれるところなんてそのままだよな。