树是非二元的,因为它可以有两个以上的孩子。每个节点都有一个子列表。在这里,我正在编写list_if
,它返回树中满足谓词p
的值列表。当我测试我的代码时,它会显示'int' object is not iterable
。有人知道我怎么写代码吗?
def list_if(t, p):
"""
Return a list of values in Tree t that satisfy predicate p(value).
Assume p is defined on all of t's values.
@param Tree t: tree to list values that satisfy predicate p
@param (object)->bool p: predicate to check values with
@rtype: list[object]
>>> def p(v): return v > 4
>>> t = descendants_from_list(Tree(0), [1, 2, 3, 4, 5, 6, 7, 8], 3)
>>> list_ = list_if(t, p)
>>> list_.sort()
>>> list_
[5, 6, 7, 8]
>>> def p(v): return v % 2 == 0
>>> list_ = list_if(t, p)
>>> list_.sort()
>>> list_
[0, 2, 4, 6, 8]
""" ###gather_lists() eliminates lists in list
return gather_lists([t.value if p(t.value) else []] +[list_if(x, p) for x in t.children])
答案 0 :(得分:0)
查看回溯(长错误消息)。就在上面写着:
之类的行TypeError: 'int' object is not iterable
应显示错误发生的程序行。 (这就是为什么它有助于在您的问题中发布追溯。)
在这种情况下,程序试图迭代int
。而口译员告诉你,这是无法做到的。
我怀疑带有错误的行有for x in y:
,而y是int
而不是列表(如果错误在list_if
函数中,请查看t。孩子。建造树时可能没有正确设置)