🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Q&A

解決済

2回答

1943閲覧

Pythonでの変数名+iの記述

ataru2222

総合スコア272

Python 3.x

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

0グッド

1クリップ

投稿2021/03/13 19:00

前提・実現したいこと

変数名にiを付けてs1,s2,s3のような書き方をしたい
リスト格納時にも使用したい

該当のソースコード

for i in range(3): s(i) = testMethod() list = [s(i)[0],s(i)[1],s(i)[2],s(i)[3]]

試したこと

s(i)や(s,i)や(s+i)など試したがうまくいきませんでした。
Pythonで動的に変数名を付ける方法を教えていただきたいです。

よろしくお願いいたします

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

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

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

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

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

guest

回答2

0

配列、リストを使いましょう
s[i] でアクセスできます

#なぜ初心者の方は動的に変数名作りたがるんだろう。。

投稿2021/03/13 22:51

y_waiwai

総合スコア88038

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

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

ataru2222

2021/03/14 01:46

>なぜ初心者の方は動的に変数名作りたがるんだろう。。 他の言語では当たり前のように使える(教科書にも載ってたりする)からだと思われます。 そしてこれ以外の書き方がわからない。 これだけだと思います。 結局配列の方がスッキリしたので配列にして対処しました。 今回は丁寧に解説していただいた別の方をBAとしましたが、解答して頂きまして本当にありがとうございました。
otn

2021/03/14 03:07

> 他の言語では当たり前のように使える(教科書にも載ってたりする)からだと思われます。 さすがに、これは勘違いでしょう。 配列要素アクセスの書き方が、言語により s[i] だったり s(i) だったりするので混乱しているだけでしょうね。
y_waiwai

2021/03/14 03:50

ここをちょっと検索すれば、動的に変数名作ってどーこーという質問が多いのがわかると思います。 ましかし、pythonではウラワザ的にそれが可能かも知れませんが、他の言語では使えない手法ですし、一歩間違えばセキュリティ的にかなりまずいことにもなったりします ということで、変数名を動的にどーこーというのがでてきた時点で、それは間違いとおもっときましょう
guest

0

ベストアンサー

pythonの変数は、globals()という辞書で管理されていますので、以下で可能です。

python

1>>> for i in range(3): 2... globals()[f's{i}'] = i*2 3... 4>>> print(s0) 50 6>>> print(s1) 72 8>>> print(s2) 94

しかし、リストを使った方が便利なことが多いです。

python

1>>> s = [] 2>>> for i in range(3): 3... s.append(i*2) 4... 5>>> print(s[0]) 60 7>>> print(s[1]) 82 9>>> print(s[2]) 104

投稿2021/03/13 22:22

ppaul

総合スコア24670

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

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

ataru2222

2021/03/14 01:39

出来ました。 結構多言語では当たり前のように使えるテスト用の構文もpython結構面倒くさいのですね。 配列の使い方を覚えていきます。 本当にありがとうございました。
quickquip

2021/03/14 02:02

こういうことがevalのような(邪悪な)手段ではなく「当たり前のように使える」他の言語というのをを教えてください。
ataru2222

2021/03/14 02:36

VBAでもjavaでも普通に使えましたし、他の質問掲示板でもそのような構文書きかたを教えていただきましたよ。 というかいちいちこんな事につっかからないでください。自分も迷惑だしあなたの様な方は他の初心者の方にとっても害です。 さようなら。
quickquip

2021/03/15 01:32 編集

似たようなことを疑問に思って検索してここにたどりついた「他の初心者の方」へのコメントです。 名前空間を書き換えたりする方法はウラワザ的な手段になります。「多言語では当たり前のように使える」みたいなこともないと思います。 その様な用途としてPython言語で想定されているのはリストや辞書ですので、そういったものを使うべきです。
Bull

2021/03/15 07:27 編集

興味がわいたのでちょっと調べてみましたが、VBA で可能かどうかは分かりませんでした。 JAVA は状況によってはできなくはないけれど、気軽に使えものではないようです。 PHP には可変変数というのがあり、Perl も同じようなことができるようですが、どちらも良く知らないので詳細は分からないです。 C# や C++ ではできないと思いますが、辞書やマップで代用可能ではないかと、思っています。 動的に変数名を定義できる言語があるのは、ちょっとした発見でしたが、どのような使い道があるのはよく分からなかったです。
xail2222

2021/03/15 16:36 編集

するのが良いか悪いかは置いといて 動的に変数を定義したとして、それにどうやってアクセスするのか 私にはよくわかりません。 多分、やりたいことは配列や辞書のことなんだろうけど、言い方が動的な変数名ってなってるだけだと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問