DFS 알고리즘을 구현 중이며 사전 목록을 만들고 싶습니다. 하지만 [dict()] * n
을 사용하면 예기치 않은 결과가 나타납니다."[dict()] * n"과 "forappend (dict())"가있는 for 루프의 차이점은 무엇입니까?
"[dict()] * n
"과 ""의 차이점을 잘 모르겠습니다.
힌트를 보내 주시면 감사하겠습니다.
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)
해당 사항 없음 https://stackoverflow.com/questions/240178/list-of-lists-changes-reflected-across-sublists- 예기치 않게 – user1767754