我有一系列看起来像这样的变量:
halpha = 6562.8
hbeta = 4861
ca1 = 8498
ca2 = 8542
ca3 = 8662
o3 = 5008.240
我在这里具有绘图功能:
def abslines(molecule,title):
plt.axvline(molecule, color = "r", label=title)
plt.text(molecule-100, 40, title,rotation=90,fontsize=20)
它在输入看起来像这样时起作用:
abslines(he,"he")
该函数工作正常,但是我不想在很多行中只为每个变量调用该函数,所以我将变量放入数组中,然后在for循环中调用功能。如何调用变量名,它是abslines
函数的第二个输入?
absarray = [halpha,hbeta,ca1,ca2,ca3,o3,na,mg,he]
for i in absarray:
abslines(i,"i")
答案 0 :(得分:2)
有很多方法可以检查脚本的变量名,但是这里似乎已被淘汰,因为您可以用它的名称和“函数”构造一个字典并直接调用它。使用该键输入所需的名称,然后将该值用作函数:
absarray = {"halpha":halpha,"hbeta":hbeta,"ca1":ca1,"ca2":ca2,"ca3":ca3,"o3":o3,"na":na,"mg":mg,"he":he}
for k,v in absarray.items():
abslines(v,k)
答案 1 :(得分:1)
如果您使用字典而不是变量,则可以简单地使用每个项目的名称索引字典。喜欢:
abs = {
# optional init - may or may not be useful:
"halpha": 0,
"hbeta": 0,
...
}
...
abs["halpha"] = ...
...
for name in abs:
abslines(abs[name], name)
答案 2 :(得分:0)
使用dict,跳过仅包含什么的变量-分子量?
from matplotlib import pyplot as plt
data = { "halpha" : 6562.8, "hbeta" : 4861, "ca1" : 8498,
"ca2" : 8542, "ca3" : 8662, "o3" : 5008.240, }
def abslines(molecule,title):
plt.axvline(molecule, color = "r", label=title)
plt.text(molecule-100, 0.40, title,rotation=90,fontsize=20) # fix y
for b,a in data.items():
abslines(a,b)
plt.show()
获得
答案 3 :(得分:0)
最简单的方法可能是使用python内置的map()
函数:
OMPI_SKIP_MPICXX