[英]How do I make the elements in one list equal the elements of the other list with loops?
所以我试图定义一个函数,以便列表的元素
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
。 甚至不知道如何开始。
您可以将它们与字典理解绑定
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
您可以创建一个字典,如果它适合您:
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
您可以像其他答案建议那样从中构建字典,也可以使用效率较低的列表查找并针对第二个列表使用结果索引:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.