
実現したいこと
・関数内で動的に取得した変数を外部で使用したい。
前提
pythonで動的に変数を取得し、外部にて用いる方法を知りたい。
以下コードで定義した変数A0~A10をエクセルなどの外部ファイルに出力を行いたいがためにリスト化を行ったが、
最下文のA=【A0、A1...】のように動的に変数をリスト化できず、手打ちでA0~A10をリスト化させる方法しか思い浮かばないため、動的にA0~A10までをリスト化する方法はないでしょうか?
該当のソースコード
python ソースコード def test(hensu,num): for i in range(num): a = i + 1 hn = hensu + str(i) globals()[hn] = a test('A',10) A = [A0,A1,A2,A3,A4,A5,A6,A7,A8,A9] print(A) 出力結果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

そもそもA0~A10のような変数を動的に作りたい理由は?
例えばディクショナリを使えば似たようなことができる
hoge = {}
key = "A1"
hoge[key] = "000"
print(hoge)
→{'A1': '000'}
print(hoge["A1"])
→000
という実装ができる
リストを返せばよい様な。
def test(num):
return [i + 1 for i in range(num)]
if __name__ == '__main__':
A = test(10)
print(A)

申し訳ない
[A0,A1,A2,A3,A4,A5,A6,A7,A8,A9]
と言うコード自体を動的に生成したいと言うことか
正直これにどれだけ意味があるのか分からないが、
初学者としては実現出来ないと理解しておくほうが良いだろう
test関数で先ほど書いたようなディクショナリを返すように実装すれば十分
def test(key, num):
retvalue = {}
for i in range(num):
a = i + 1
hensu = key + str(i)
retvalue[hensu] = a
return retvalue
print(test("A", 10))
→{'A0': 1, 'A1': 2, 'A2': 3, 'A3': 4, 'A4': 5, 'A5': 6, 'A6': 7, 'A7': 8, 'A8': 9, 'A9': 10}
print(list(test("A", 10).values()))
→[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
他の方の質問と同じですが
> 最下文のA=【A0、A1...】のように動的に変数をリスト化
とはどういう意味ですか? どのようなことがしたいのですか?
pythonでは通常「変数そのものをリストに入れる」ことはできません。
「なんのために」という情報がないと「辞書やリストを素直に使うべき」以外の回答はでてこないと思います。(「辞書やリストを素直に使う方がまとも」な話なので、「なんのために」という情報があっても「それはやめるべき」になりそうではありますが……)
