返回信息流list.append 改成+= 就不会改变了 具体原因版上有无数类似的解释了
这是一条镜像帖。来源:北邮人论坛 / python / #4987同步于 2015/1/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
Re: 请教一个python语法上的问题
b78859793
2015/1/24镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
list 还能 += 呢?
【 在 b78859793 的大作中提到: 】
: list.append 改成+= 就不会改变了 具体原因版上有无数类似的解释了
【 在 json123 的大作中提到: 】
: 题目连接是这个 https://oj.leetcode.com/problems/letter-combinations-of-a-phone-number/
: 一个典型的dfs递归问题。。
: 递归的时候改变了传入的参数的值,python中的传递不都是值传递么?怎么会连传入参数本身也改变了呢?
: ...................
具体点。我在你的代码里没有找到能够改变参数指向的对象。
就是dfs(strArray, length + 1, stradd)这个里面。。
用leetcode上面那个例子
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
output应该是像上面那个
我这个递归里面运行的结果成了这样
dfs("23", 1, "a")
dfs("23", 2, "ab") -----------------> return
dfs("23", 1, "ab") -----------------> 结果这里strAdd成了"ab", 而不是"a"了。。。
【 在 nuanyangyang 的大作中提到: 】
:
: 具体点。我在你的代码里没有找到能够改变参数指向的对象。
我看了下你的代码 不是参数传递的问题
是你的代码逻辑有问题导致结果不对
for i in s:
stradd += i
dfs(strArray, length + 1, stradd)
首先,Python是传引用的,本版已经有过很多相关讨论。
但这个题目的问题其实跟这个没有关系,问题出在这个循环:
for i in s:
stradd += i
按照这里的逻辑,每次循环stradd的值都会加上i,当然得不到预期结果了。
来自「北邮人论坛手机版」
算法错了吧。7楼8楼说的对。
stradd += i
dfs(strArray, length + 1, stradd)
改成
dfs(strArray, length + 1, stradd + i)