关于Python 中出现的TypeError: missing 1 required positional argument
问题描述
开始学习python正在看数据结构 关于图的部分 这个是在实现一个图的深度优先遍历 和 广度优先遍历,但是在最后,也就是g.add_nodes([i+1 for i in range(10)])会显示TypeError: add_nodes() missing 1 required positional argument: ’nodelist’ 就完全不知道该怎么去解决,有没有大神可以指点一下。
这个是我的程序
class Graph(object):
def __init__(self, *args, **kwargs): self.node_neighbors = {} self.visited = {}def add_nodes(self,nodelist): for node in nodelist:self.add_node(node)def add_node(self,node): if node not in self.add_nodes():self.node_neighbors[node] = []def add_edge(self,edge): u, v = edge if(v not in self.node_neighbors[u]) and (u not in self.node_neighbors[v]):self.node_neighbors[u].append(u)if(u!=v): self.node_neighbors[v].append(u)def nodes(self): return self.node_neighbors.keys()def depth_first_search(self, root=None): order = [] def dfs(node):self.visited[node] = Trueorder.append(node)for n in self.node_neighbors[node]: if not n in self.visited:dfs(n) if root:dfs(root) for node in self.nodes():if not node in self.visited: dfs(node) print(order) return orderdef breadtg_frist_search(self, root = None): queue = [] order = [] def bfs():while len(queue) > 0: node = queue.pop() self.visited[node] = True for n in self.node_neighbors[node]:if (not n in self.visited) and (not n in queue): queue.append(n) order.append(n) if root:queue.append(root)order.append(root)bfs() for node in self.nodes():if not node in self.visited: queue.append(node) order.append(node) bfs() print(order) return order
if name == ’__main__’:
g = Graph()
g.add_nodes([i+1 for i in range(10)])g.add_edge((1, 2))g.add_edge((1, 3))g.add_edge((2, 4))g.add_edge((2, 5))g.add_edge((4, 8))g.add_edge((5, 8))g.add_edge((5, 9))g.add_edge((3, 6))g.add_edge((3, 7))g.add_edge((7, 10))g.add_edge((9, 10))print(’nodes:’ + g.nodes())order = g.breadtg_frist_search(1)order = g.depth_first_search(1)
问题解答
回答1:def add_node(self,node): if node not in self.add_nodes():self.node_neighbors[node] = []
if node not in self.add_nodes():中的add_nodes()需要参数,具体要什么看你自己了.
相关文章:
1. android-webview - Android 7.0 webview不自动刷新2. java - C++ error C2678: 二进制“<<”: 没有找到接受“const std::ostream”类型的左操作数的运算符3. Java EE 6:JSF与Servlet + JSP我应该学习JSF吗?4. Java错误:只能导入类型XYZ解析为包5. vue.js - vue开发的项目,想在页面打开的时候使input自动聚焦,使用的官方的自定义指令,但是在ios真机上测试无效6. javascript - angularJs里点击添加删除类7. python - 用ffmpeg采集视频,用terminate没法结束进程8. shell - mac bash: mysql: command not found9. javascript - 使用百度文本编辑器ueditor不显示样式问题10. django - python 读写 setting.py文件

网公网安备