python - 列出函数指向最后一个内存地址的返回
问题描述
def printAllPaths(start: Node, end: Node, path=[], path_list: list = []):
path.append(start.name)
start.visited == color.black
if start == end:
path_list.append(path[:])
else:
for v in start.adjacenciesList:
if v.visited == color.white:
path_list = printAllPaths(v, end, path)
start.visited == color.white
path.pop()
return path_list
if __name__ == '__main__':
node1 = Node("A")
node2 = Node("B")
node3 = Node("C")
node4 = Node("D")
node5 = Node("E")
node1.append(node2)
node1.append(node3)
node2.append(node3)
node2.append(node4)
node3.append(node4)
node4.append(node5)
list1 = []
list2 = []
list2 = printAllPaths1(node4, node5, [], [])
list1 = printAllPaths(node1, node4, [], [])
print(list1)
print(list2)
输出:
[['D', 'E'], ['A', 'B', 'C', 'D'], ['A', 'B', 'D'], ['A', 'C', 'D']]
[['D', 'E'], ['A', 'B', 'C', 'D'], ['A', 'B', 'D'], ['A', 'C', 'D']]
预期输出:
[['A', 'B', 'C', 'D'], ['A', 'B', 'D'], ['A', 'C', 'D']]
[['D', 'E']]
但为什么 LIST1 和 LIST2 指向同一个地址?我不明白
如果你想尝试,我会离开 Node 课程
class Node(object):
def __init__(self, name, adjacent=[],
visited=color.white, predecessor=None):
self.name = name
self.adjacenciesList = []
self.visited = visited
self.predecessor = predecessor
self.start = None
self.finish = None
self.distance = sys.maxsize
self.grade = 0
def __repr__(self) -> str:
return f'''{self.name}'''
def append(self, vertex):
self.adjacenciesList.append(vertex)
解决方案
推荐阅读
- javascript - 如何使我的 html 嵌入 (js) 在不同的选项卡上可见?
- c# - 处理继承时避免在 EF Core 中使用鉴别器
- html - CSS Grid:自动收缩空行?
- javascript - jQuery隐藏功能不适用于iframe
- php - 变量 PHP 文件读取
- flutter - Map 真的是 Flutter 中的一种类型吗?未完成的 Map 声明会破坏其他 Map 声明
- r - 切片向量显示错误范围
- android - Android约束布局textview包装上下文并在没有更多空间时显示椭圆
- python - 设置位数(x 或 y)+ 设置位数(x 和 y)= m。有没有办法解决这个方程,找到 x 和 y 之间的关系?
- drake - Drake 中“通过接触”轨迹优化的工作流程