【问题标题】:Repeating 'False' outputs重复“假”输出
【发布时间】:2017-03-22 12:09:39
【问题描述】:

我正在尝试实现一个 dfs 以在字符串图中查找循环。例如图表:

walkways_info = """\
U 3
0 1
1 2
2 0
"""

将返回 True。我目前遇到的问题是我的 if 语句:

if current_vertex in visited or int(graph[i].split()[1]) in visited:

它正在输出 False,但我不希望它在这个阶段输出任何东西。

更新代码Here

我将不胜感激。

【问题讨论】:

  • 在解决任何基于图形的任务之前,我会建议您构建一个基于字符串表示的邻接矩阵。通过这种方式,您将能够使用众所周知且经过优化的算法和实现。
  • 查看您的代码:它可以返回False 的唯一方法是当您的图表为空时!
  • 我已经在 for 循环之外添加了 return False 如果图形被迭代并且没有调用 return True 不应该这个触发器吗?
  • 我在else: return True print(visited) 添加了一个打印语句,visited 是一个空列表。它一定不能进入if current_vertex in visited == False 循环,但我不知道为什么..
  • 凹凸........

标签: python graph microsoft-distributed-file-system


【解决方案1】:

我相信你的操作顺序错误,in== 玩得不好。

current_vertex in visited == True 像这样计算 (current_vertex in (visited == True))

例子:

In [1]: x = [0,1,2]

In [2]: y = 1

In [3]: y in x == True
Out[3]: False

In [3]: y in x
Out[3]: True

因此,如果您放弃 == True,它应该可以工作。

if current_vertex in visited or int(graph[i].split()[1]) in visited:

【讨论】:

  • 嘿,谢谢你,但我现在注意到,当它到达if current_vertex in visited or int(graph[i].split()[1]) in visited 时,它会输出False 我可以让它不这样做吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多