繁体   English   中英

如何使用循环使一个列表中的元素等于另一列表中的元素?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM