【发布时间】:2013-07-26 19:14:08
【问题描述】:
我有以下问题:
首先,我有一个元组列表,如下所示:
[(1,2),(2,3),(4,5),(5,6),(5,7),(5,8),(6,9),(6,10),(7,11),(12,14)]
为了方便起见,假设每个元组中的第一个数字“控制”第二个(对于熟悉依赖解析的人来说,第一个数字代表头的索引,而第二个数字代表依赖的索引) .
现在我要创建的是以int 和上面的列表为参数的函数。该函数必须查找所有将整数参数作为第一个数字的元组并返回第二个数字。然后该函数应该递归地获取这些第二个数字中的每一个,查看它作为第一个数字出现的元组是什么并返回第二个数字。这应该一直持续到无法检索到其他第二个数字为止。
我会用一个例子来更好地解释它:
假设这个函数将数字 5 作为输入。第一个数字为 5 的元组是 (5,6),(5,7),(5,8);作为第一个结果,该函数应取 6,7,8 并将其附加到 list。现在该函数应该考虑 6,7,8 ,查找它们作为第一个数字 ((6,9),(6,10),(7,11)) 出现的元组并返回第二个数字 (9,10,11)。由于 8 在任何元组中都不是第一个数字,因此它的旅程在此阶段结束。返回的最终列表应该是[6,7,8,9,10,11]。
我尝试过类似的方法,但它不起作用:
def foo(start_index, lista_tuples,list_to_return=list()):
indeces=[x[1] for x in lista_tuples if x[0]==start_index]
list_to_return.extend(indeces)
for index in indeces:
foo(index,lista_tuples,list_to_return)
return list_to_return
但它不起作用。有人能帮我吗?
【问题讨论】:
-
@inspectorG4dget:不是吗?
foo(index,lista_tuples,list_to_return) -
似乎对我有用。你能添加一个完整的非工作示例吗?
-
这似乎对我有用:
foo(5, [(1,2),(2,3),(4,5),(5,6),(5,7),(5,8),(6,9),(6,10),(7,11),(12,14)])返回[6,7,8,9,10,11],就像你说的那样。 -
天哪!撤回(同时,安排与眼科医生的预约)。
-
小心mutable default argument,顺便说一句!你真的想在每次调用没有明确提供一个列表时使用相同的列表吗?