只是說我有很多名稱序列為var1, var2, varn?... 的變數,例如:
var1 = 1
var2 = 2
var3 = 3
var4 = 4
我想用這些變數名填充一個串列。我試圖這樣做,但沒有奏效:
def namestr(obj, namespace):
return [name for name in namespace if namespace[name] is obj]
variables = []
for i in range(1,5):
variables.append(namestr(vars()['semplus' str(i)], globals()))
有誰知道如何做這樣的事情?結果應該是這樣的:
[var1, var2, var3, var4]
uj5u.com熱心網友回復:
最好用字典來做到這一點:
In [1]: d = {}
In [2]: for i in range(1,5):
...: d[f"var{i}"] = i
...:
In [3]: d["var1"]
Out[3]: 1
In [4]: d.keys()
Out[4]: dict_keys(['var1', 'var2', 'var3', 'var4'])
uj5u.com熱心網友回復:
根據您的var#定義,在我用于其他測驗的作業區中:
In [330]: def namestr(obj, namespace):
...: return [name for name in namespace if namespace[name] is obj]
...: variables = []
...: for i in range(1,5):
...: variables.append(namestr(vars()['var' str(i)], globals()))
...:
...:
In [331]: variables
Out[331]: [['i', 'var1'], ['i', 'j', 'var2'], ['dim', 'i', 'var3'], ['i', 'var4']]
這里發生了什么? var2有一個值 2。j從之前的使用也是如此。而且i是當前迭代變數。
In [332]: var1
Out[332]: 1
In [333]: var3
Out[333]: 3
In [334]: dim # a prior use of this variable
Out[334]: 3
In [335]: i
Out[335]: 4
In [336]: j
Out[336]: 2
所以你得到的變數的名稱與對應于各個值var1,var2等變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/372353.html
上一篇:從兩個陣列創建直方圖
下一篇:用于雙重拍賣的陣列中的快速匹配
