返回信息流在有向无循环图中,递归函数+for循环嵌套使用(相当于深度搜索?),希望保存查找的每一条路径结果为字典,但是发现字典中结果始终指向同一内存位置[ema12][ema12],后面的数据会覆盖前面的结果,解决了很久也没有办法[ema1],代码小白[ema1]求助大神,有没有遇见过类似问题或者明白问题原理的可以帮帮忙~~
如图,希望保存的Vertex.prev是不同的路径,但是始终保存的是最后查找的路径
更新了代码贴图~~第一次问这个相关的,不太懂[ema41],麻烦各位同学啦!
这是一条镜像帖。来源:北邮人论坛 / python / #25801同步于 2021/10/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【求助】递归函数+for循环嵌套使用保存结果为字典,但是始终指
fly2333
2021/10/13镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不会是局部变量吧
【 在 fly2333 (fly233) 的大作中提到: 】
: 在有向无循环图中,递归函数+for循环嵌套使用(相当于深度搜索?),希望保存查找的每一条路径结果为字典,但是发现字典中结果始终指向同一内存位置[ema12][e...
: 如图,希望保存的Vertex.prev是不同的路径,但是始终保存的是最后查找的路径
: ...................
不给源码只给描述,是怕人剽窃、想要悬丝诊脉吗?楼主的代码要是没有那个保密价值,就不要藏着掖着了吧
哪怕写个同样问题的最小实现样本呢
P.S. 被字体治好了低血压
【 在 AlHg 的大作中提到: 】
: 不给源码只给描述,是怕人剽窃、想要悬丝诊脉吗?楼主的代码要是没有那个保密价值,就不要藏着掖着了吧
: 哪怕写个同样问题的最小实现样本呢
: P.S. 被字体治好了低血压
已经更新啦,同学可以看一下呢~~
是不是你字典定义在for循环里了,然后每次for循环字典就都重置了
【 在 fly2333 的大作中提到: 】
: 已经更新啦,同学可以看一下呢~~
【 在 fly2333 的大作中提到: 】
: 已经更新啦,同学可以看一下呢~~
虽然还不能算是最小可复现代码(起码要能运行叭),但是还是给出几点建议叭:
else分支有些语句感觉是左手倒右手。比如你明显是用索引去获取节点的对象,然后紧接着就用对象的index值获取索引。如果不这么写的话,其实和if分支的好多逻辑是公用的(毕竟只干了创建一个新的路径节点这一件事),区别应该就只是应该继续递归还是把结果append到list里而已(就是说要对更新的路径做什么,是要继续生成路径还是保存路径),结果你在两个分支里各自实现了一遍,暂存的方法还不太一样,一个是普通的变量,另一个还得在字典里过一圈,中间在不同地点夹杂着print还不太好阅读
第二个比较迷惑的点是,为什么要在循环里创建一个只用一个字段的字典,这个字段还是整数类型,然后这个字典本身根本就没被用到
其他的细节也很迷惑,比如一个list的变量却起名叫target_dict,这不是害自己吗
总之就是不太能理解为什么要这么干吧
----------------------------------
或者不如说,如果楼主希望怎么写都不会出问题,就去用另一种语言吧。有完善的闭包(Python的闭包是漏的),不会有引用问题(鼓励甚至强制不可变),不会写出奇怪的重复逻辑(健全的模式匹配时刻提醒你写好代码),不会字典哈希满天飞(代数数据类型),不会有重定义问题(合理的作用域Shadow或者干脆不让你重定义),不会有递归性能问题(暴力递归自动优化成动态规划,用生成表达式实现自动函数缓存)。没错我说的就是高贵的Haskell(逃
之前是定义在外面,但是结果也是这样,在网上查了以后改在里面的,结果还是不对
【 在 zh19951213 的大作中提到: 】
: 是不是你字典定义在for循环里了,然后每次for循环字典就都重置了