matlabでeval関数を用いて変数を作るように、name0,name1,name2・・・というような"文字列"+数値を繰り返し文で作りたいのですが、Pythonの初心者なもので検索しても全くわかりません。
よろしくおねがいします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
辞書かリストを使うべきですね。
リストを使った例は既にあるので、
私は辞書を使った例を。
lang
1name = {} 2name[0] = 'hoge' 3name[1] = 'fuga' 4name[2] = 'piyo' 5print name[1]
lang
1data = {} 2data['name0'] = 'hoge' 3data['name1'] = 'fuga' 4data['name2'] = 'piyo' 5print data['name1']
初期化の手間が省けますが、
専有メモリはリストに比べ3倍増です。
ところで、これ
name0,name1,name2・・・というような"文字列"+数値を繰り返し文で作りたい
実はexec関数を使えばできます。
lang
1for i in range(3): 2 code = 'name{} = {}'.format(i, 3 ** i) # 例として3のi乗を代入 3 exec(code) 4 5print name0, name1, name2 # ==> 1 3 9
ただ、これが通用するのはモジュールレベルだけで、
同じことを関数内で実行すると破綻します。
ある変数がローカルなのかグローバルなのかは関数のコンパイル時に決定されるので、
後から変数を動的に作っても参照されません。
lang
1name1 = 123 2 3def foo(num): 4 exec('name{} = 456'.format(num)) 5 print name1 # 123 6 7foo(1)
そういうわけで、変数を動的に作るのは諦めたほうがよさげ。
投稿2015/04/27 13:50
編集2015/04/27 14:11総合スコア21
0
初心者なもので時間がかかりましたが、リストを用いて解決しました。皆さん回答ありがとうございました。
投稿2015/05/01 11:01
総合スコア10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。