pythonで動的に変数を作成したい(for文でloopまわして作成)
動的に変数を作成
pythonでつまずいたことがあったのでメモ
for文でloopさせて、動的に変数作成をしたかったんですよ。
その際に、引数もfor文で作成的なやつです。
間違った例↓
for n in dataframe.colums "data_{}".format(n) = dateframe[n]
これはダメでしたね。
.formatは文字列に変数を代入するという方式みたいですね。
やるとしたら、
[[dateframe[1],[dateframe[2],・・・・,datafarame[n]]
みたいに、リスト内リストか辞書型が良いみたいです。
list = [] #リスト for column in dframe.columns: list.append(dframe[column].dropna()) list2 = {} #辞書型 for column in dframe.columns: list2[column] = dframe[column].dropna()
リスト内リストだと引数が数字になるけど、
辞書型だと、引数に文字列が使えるので便利かな、
ちなみに下記を参考にすると、exec関数で解決できるっぽいですが、
変数となるタイミングの問題で推奨されていなよう。
Python - pythonでname0,name1,name2・・・のように変数を宣言したい|teratail
モジュール外から呼び出すと、想定外の動きしないとか、そういうバグ
具体例としては以下2つの違い
for i in range(3): code = 'name{} = {}'.format(i, 3 ** i) # 例として3のi乗を代入 exec(code) print name0, name1, name2 # ==> 1 3 9
name1 = 123 def foo(num): exec('name{} = 456'.format(num)) print name1 # 123 foo(1)