質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

18075閲覧

python 変数名の取得

Astro_Bamboo

総合スコア11

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/04/28 06:30

Pythonで変数名を取得したい。

やりたいこととしては、

python

1data1 = [12.0 , 13.5 , 12.5] 2data2 = [10.0 , 9.0 , 7.5] 3data3 = [9.0 , 2.0 , 14.0]

というデータに対して、以下のループで表示したい。

python

1for d_n in range(data1, data2, data3): 2 print d_n

本当は

python

1data1 2data2 3data3

と出力されてほしいが結果として、

python

1[12.0 , 13.5 , 12.5] 2[10.0 , 9.0 , 7.5] 3[9.0 , 2.0 , 14.0]

変数名ではなく、代入した値が返ってくる。

「python 変数名 取得」でググってみるも、やはり変数名を取得することはできないようでした。
ただし、古い情報だったため、今では何か解決策があるのかを知りたいです。

どうか、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

(追記というか書き直し)
これは、表データをdata1, data2, data3という変数に持たせているのが良くない、となります。
リストか辞書に突っ込みましょう。

辞書だとしたら

python

1{'data1': 【一個目の計算データ】, 2 'data2': 【二個目の計算データ】, ... 3}

という感じに持つことになります。

そしたら、

python

1for data_label, data in data_dic.items() 2 print(data_label) 3 【データのプロット処理】

という風に書けます。

投稿2017/04/28 06:39

編集2017/04/28 07:07
yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Astro_Bamboo

2017/04/28 07:01

質問にある、data1、data2、data3は本当は3行1000列程度のデータで、 具体的な(一部)コードがいかになります。 ここで、## Calculateから##Plotするところまで、data2に対してdata1とdata3のデータを計算させたいと考えていました。 今後data2に対して、data1やdata3のようなデータを多く適用していきたく、ループをかけたいのです。 ```python am1 = 1.10 am2 = 1.03 threshold = 0.0001 ## Caluculate scale = [] for i in range(len(data1)): if (data1[i][1] or data2[i][1]) < 0: x = math.log(threshold) / math.log(threshold) * am1 / am2 scale.append(x) else: x = math.log( data1[i][1] ) / math.log( data2[i][1] ) * am1 / am2 scale.append(x) ## Plot plt.title('test') plt.xlabel("test") plt.ylabel("test") plt.ylim(0.0, 3.0) plt.xlim(0.0, 1.1) plt.plot(data1[:, 1], scale, '.') plt.savefig('/path/to/' + 'data1' + '.pdf') plt.clf() ```
yuba

2017/04/28 07:03

では、回答に追記します。
Astro_Bamboo

2017/04/28 09:41

ありがとうございました。 無事、辞書を使用することでうまくできました。
guest

0

locals(), globals() で スコープ内にある関数、変数の名前のディクショナリが取得できるので、ループで回して表示などできます。

参考:変数の変数名を文字列で取得する。

投稿2017/04/28 06:50

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問