您的位置 首页 知识分享

DFS中append导致列表嵌套的原因是什么?

DFS中append导致列表嵌套的由来 在DFS过程中,为了记录路径,可以使用一个动态数组path来保存经过的…

DFS中append导致列表嵌套的原因是什么?

DFS中append导致列表嵌套的由来

在DFS过程中,为了记录路径,可以使用一个动态数组path来保存经过的节点。在每一次递归中,path都会被修改,因此每次都需要将此时的path复制一份,才能在回溯时还原到之前的状态。

在此代码中,遇到了一个问题:DFS中执行ans.append(path)操作后,ans中存储的结果并不是独立的path列表,而是由path列表组成的列表,即[[path], [path], …]。

产生嵌套的原因在于ans.append(path)操作将整个path列表作为元素添加到了ans中。当递归回溯时,path列表被修改了,但ans中的列表元素仍然指向了修改前的path,导致ans中的结果相互嵌套。

为了得到正确的独立path列表,需要将ans.append(path)替换为ans.extend(path)。extend操作会将path中的每个元素分别添加到ans中,而不是将整个path列表添加为一个元素。这样,ans中就会存储正确的独立path列表,即[path1, path2, …]。

以上就是DFS中append导致列表嵌套的原因是什么?的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/5325.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部