所以我试图定义一个函数,以便列表中的元素
elements = ['H', 'N', 'C', 'O']
等于同一位置的另一个列表中的元素
molarMass = [1.00794, 14.0067, 12.0107, 15.9994]
因此H = 1.00794,N = 14.0067等。
编辑:
试图定义一个函数示例:
elementMolarMass(elementSymbol)
使用时看起来像这样
elementMolarMass('H')
它返回第一个列表中的相应元素,并与另一个列表中位于相同位置的元素匹配
1.00794
。
不确定如何开始。
答案 0 :(得分:4)
你可以用字典理解来绑定它们
elements = ['H', 'N', 'C', 'O']
molarMass = [1.00794, 14.0067, 12.0107, 15.9994]
ElementToMolar = {elements[x]:molarMass[x] for x in range(len(elements))}
for x in ElementToMolar:
print (x, ElementToMolar[x])
Which outputs:
O 15.9994
H 1.00794
N 14.0067
C 12.0107
或者如果你想用操作抽象它并进一步使用/与数据交互,可能应该使用一个类?
elements = ['H', 'N', 'C', 'O']
molarMass = [1.00794, 14.0067, 12.0107, 15.9994]
class Element(object):
def __init__(self, Name, Mass):
self.Name = Name
self.Mass = Mass
def __str__(self):
return "{0.Name} = {0.Mass}".format(self)
def CreateElementsFromLists(elementList, molarMassList):
if (len(elementList) == len(molarMassList)):
return [Element(elementList[x], molarMassList[x]) for x in range(len(elementList))]
else:
print ("Lists should have equal length")
elements = CreateElementsFromLists(elements, molarMass)
for element in elements:
print (element)
这将生成您可能使用的新元素列表。并输出:
H = 1.00794
N = 14.0067
C = 12.0107
O = 15.9994
答案 1 :(得分:2)
如果字典适用,您可以创建字典:
dict(zip(elements, molarMass))
它会给你结果:
{'H': 1.00794, 'C': 12.0107, 'O': 15.9994, 'N': 14.0067}
或者如果你想把它作为字符串列表:
["{}={}".format(elem[0], elem[1]) for elem in zip(elements, molarMass)]
或者在一个字符串中:
' '.join("{}={}".format(elem[0], elem[1]) for elem in zip(elements, molarMass))
更新后,更容易使用这样的字典:
elementMolarMass = dict(zip(elements, molarMass))
print(elementMolarMass['H'])
结果:
1.00794
答案 2 :(得分:1)
您可以像其他答案建议的那样构建一个字典,或者您可以使用效率较低的列表查找并将结果索引用于第二个列表:
def elementMolarMass(elementSymbol):
return molarMass[elements.index(elementSymbol)]
elements.index('N')
Out[35]: 1
elements.index('C')
Out[36]: 2
elements.index('W')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-37-c3eb78ff165e> in <module>()
----> 1 elements.index('W')
ValueError: 'W' is not in list