【发布时间】:2017-12-26 00:56:31
【问题描述】:
我正在实现一个 DFS 算法,我想创建一个字典列表。但是我发现如果我使用[dict()] * n,我得到了意想不到的结果。
我不确定“[dict()] * n”和“for 循环与.append(dict())”之间的区别。
感谢任何提示。
def DFS1(nums, level, target, dp):
if level == len(nums):
if target == 0:
return 1
else:
return 0
if target in dp[level]:
return dp[level][target]
cnt1 = DFS1(nums, level + 1, target + nums[level], dp)
cnt2 = DFS1(nums, level + 1, target - nums[level], dp)
dp[level][target] = cnt1 + cnt2
return cnt1 + cnt2
测试代码为:
nums = [1,1,1,1,1]
n = len(nums)
target = -3
#dp = [dict()] * n #<== This does not work as expected
dp = []
for i in range(0, n):
dp.append(dict())
resCnt = DFS1(nums, 0, target, dp)
print(resCnt)
【问题讨论】:
标签: python dictionary collections