var_list = [one, two, three]
num = 1
for var in var_list:
var = num
num += 1
上記は「1」が存在しないというエラーを表示します。この方法で割り当てることはできませんか?私は、リスト内の各varに増分する番号を割り当てたい。ループを使用してリスト内の変数に値を代入する
var_list = [one, two, three]
num = 1
for var in var_list:
var = num
num += 1
上記は「1」が存在しないというエラーを表示します。この方法で割り当てることはできませんか?私は、リスト内の各varに増分する番号を割り当てたい。ループを使用してリスト内の変数に値を代入する
Pythonの変数は、の値のの名前です。彼らは本当に値を「含む」わけではありません。
for var in var_list:
は、 'var'をリストの各要素の名前にします。ループの内部でvar = num
はリストに影響しません。代わりに、var
がリスト要素の名前でなくなり、代わりにnum
の現在の名前の名前になります。
one
、two
とthree
は、すでに値の名前ではありません場合は、リストを作成するときに、それらを持っている値のリストを作成するために求めているので、あなたは、そのようにそれらを使用することはできません。同様 、 (その後、var_list
がそのリストの名前になります)。リストには実際に値が含まれていないことに注意してください。つまり、参照する、つまり共有します。
いいえ、それはそのようには機能しません。
あなたは試すことができます:
one, two, three = range(1, 4)
この作品の複数の割り当てで変数を定義することによって。ちょうどあなたがa, b = 1, 2
を使用できるように。これにより、range
が展開され、その値がLHS変数に割り当てられますので、ループのように見えます(ただし、動作する点を除きます)。
(私は実際のプログラム...にはお勧めしません)別のオプションは、exec文で変数名を導入することです:あなたはそれを作成するまで
names = ['one', 'two', 'three']
num = 1
for name in names:
exec "%s = %s" % (name, num)
num += 1
print one, two, three
変数が存在しません。単に変数を参照するだけでは作成できません。 [one, two, three]
を実行すると、変数one
、two
、およびthree
が作成される前に参照されています。
グローバル変数の辞書には、globals()
ビルトイン関数を使用してアクセスできます。
>>> var_names = ["one", "two", "three"]
>>> count = 1
>>> for name in var_names:
... globals()[name] = count
... count += 1
...
>>> one
1
>>> two
2
>>> three
3
>>> globals()[raw_input()] = 42
answer
>>> answer
42
もちろん、これは有用性には限りがあります。 –
これは動作しますが、この答えは理由について少し短いです:辞書は意味、あなたはこのように、実行時に文字列として指定された名前を持つ変数を作成することができ、キーの文字列を使用していますOPsの方法*は機能しません。 – John
それは本当です。他の人がすでにそれをカバーしているので、私はこれがなぜそれに基づいて動作するのか説明します。 – TryPyPy