Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数返回空,循环内打印具有所需输出_Python_Function - Fatal编程技术网

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:我做到了我想要的地方。我敢肯定这是一种肮脏,如果它要采取一些更可变的东西,但它做的工作!