Python 函数返回空,循环内打印具有所需输出
我有一个函数,它读取一个字典,如下所示:Python 函数返回空,循环内打印具有所需输出,python,function,Python,Function,我有一个函数,它读取一个字典,如下所示: {'a': ['a', 'b'], 'c': ['c', 'a'], 'b': ['b', 'c']} 我的函数看起来像 def unioncompare(node, starting): visited, stack = set(), [starting] while stack: vertex = stack.pop() if vertex not in visited: visited.add(vertex)
{'a': ['a', 'b'], 'c': ['c', 'a'], 'b': ['b', 'c']}
我的函数看起来像
def unioncompare(node, starting):
visited, stack = set(), [starting]
while stack:
vertex = stack.pop()
if vertex not in visited:
visited.add(vertex)
stack.extend(node[vertex])
return stack
它返回一个空列表
然而,在简单的调试中,如果我在倒数第二行(在if语句中)插入一条print语句,那么迭代将(大致)产生我所追求的结果
if vertex not in visited:
visited.add(vertex)
stack.extend(node[vertex])
print stack
return stack
['b', 'c']
['b', 'c', 'a']
['b', 'c', 'a', 'b']
[]
我不完全理解if语句中的值发生了什么,它们没有正确传递和返回
为任何帮助干杯 我怀疑如果你把
打印
放在循环内部,而把打印
放在如果
外部,你会看到堆栈首先增长,然后收缩到零。这不是您希望发生的事情吗?而stack
没有break
选项可以保证函数在stack
为空之前不会返回。您是否希望返回?而不是堆叠。收缩行为确实如此,我想我明白了原因。已访问的返回将为我提供函数所访问的集合,在该集合中,我将搜索字典中可从给定输入访问的元素。给定A,A到B,(B为键),B到C(C为键),C到A。如果这有意义的话?感谢Jornsharpe!我开始思考缺少休息,成长和萎缩。因为我的列表总是会达到某个数字,所以一个简单的while len(stack)<3:我做到了我想要的地方。我敢肯定这是一种肮脏,如果它要采取一些更可变的东西,但它做的工作!