我有一个函数,我想输出与'O'相关的值行,而不是打印这些值的位置,我该如何修改它? allReactions最初是一个空数组。我已经尝试了很多方法来解决这个问题但仍然遇到错误。另外我认为我的方法效率低于可能的方法。
allReactions = []
reactionFile = "/Databases/reactionsDatabase.txt"
with open(reactionFile) as sourceFile:
for line in sourceFile:
if line[0] == "!" or len(line.strip()) == 0: continue
allReactions.append(Reaction(line, sourceType="Unified Data"))
def find_allReactions(allReactions, reactant_set):
reactant_set = set(reactant_set)
relevant_reactions = []
previous_reactant_count = None
while len(reactant_set) != previous_reactant_count:
previous_reactant_count = len(reactant_set)
for reaction in allReactions:
if set(reaction.reactants).issubset(reactant_set):
relevant_reactions.append(reaction)
reactant_set = reactant_set.union(set(reaction.products))
return relevant_reactions
print find_allReactions(allReactions, ["O"])
答案 0 :(得分:3)
您正在尝试打印Reaction
个对象的列表。默认情况下,python打印一个类对象的ID,因为它真的没什么可说的。如果您可以控制班级定义,则可以通过向班级添加__str__
和__repr__
方法来进行更改。
>>> class C(object):
... pass
...
>>> print C()
<__main__.C object at 0x7fbe3af3f9d0>
>>> class C(object):
... def __str__(self):
... return "A C Object"
...
>>> print C()
A C Object
>>>
如果你无法控制班级......那么,作者并没有实现对班级的美妙看法。您可以使用方法创建子类,或者编写一个函数来提取您想要的东西。