if path and len(path) > 0: ^^^^^^^^^ TypeError: object of type 'generator' has no len()
时间: 2024-10-26 07:01:39 浏览: 12
TypeError object of type ‘type’ has no len()—Python报错问题:
当你看到`TypeError: object of type 'generator' has no len()`这样的错误,这意味着你在尝试对生成器对象使用`len()`函数,这是不允许的,因为生成器实际上是按需生成的,而不是一次性提供所有的数据。
在`nx.shortest_simple_paths()`函数返回的结果上,`path`是一个生成器对象,它不会立即计算出路径的长度,而是每次请求才会生成下一个路径片段。所以,你需要使用循环逐个查看路径,而不是直接对整个生成器求长。
正确的做法是使用for循环迭代生成的所有路径,并检查它们是否为空:
```python
paths = nx.shortest_simple_paths(G, source, target)
if paths:
for path in paths:
if path:
# 检查路径是否非空
print("存在从{}到{}的路径:{}".format(source, target, path))
break
else:
print("不存在从{}到{}的简单路径".format(source, target))
```
在这个修改后的代码里,我们首先确认`paths`是否不为空,然后遍历路径,只要发现一个非空路径,就会停止并打印出来。
阅读全文