我有一个如下列表:
[['1', ' H ', ' Hydrogen', ' 1.00794(4)', 'FFFFFF', '1s1 ', '2.2', '37', '', '120', '1312', '-73', '-1, 1', 'gas', 'diatomic', '14', '20', '0.0000899', 'nonmetal', '1766'], ['2', ' He ', ' Helium', ' 4.002602(2)', 'D9FFFF', '1s2 ', '', '32', '', '140', '2372', '0', '', 'gas', 'atomic', '', '4', '0.0001785', 'noble gas', '1868'], etc...]
这一直贯穿元素周期表。我还有一个函数(在类中,因此是self),它应该打印一个子列表(每个元素一个子列表),如下所示:
def get_element_data(self, identifier):
if type(identifier) == int:
if self.check_atomic_number_exists(identifier):
return self.parsed_data[identifier - 1]
if type(identifier) == str:
if len(identifier) <= 2:
print("passed in symbol")
return (element for element in self.parsed_data if identifier ==
element[1])
if len(identifier) > 2:
print("passed in name")
return (element for element in self.parsed_data if identifier ==
element[2])
parsing_object.get_element_data("Hydrogen")
但如果我运行它,它将返回一个生成器对象,而不是子列表。如何使其返回子列表?而且,如果我按原子序数搜索,效果也不错
您将返回以下内容:
(element for element in self.parsed_data if identifier == element[2])
这实际上是一个发电机。我对短python不太了解,因此我不确定是否完全理解您的代码,但我认为这就是您想要做的:如果希望它像生成器一样运行,则不应使用
return
,而应使用yield
。 这使您能够:所以对你来说是
让它返回一个列表
如果你需要的话,甚至是一个元组
相关问题 更多 >
编程相关推荐