Python代码表现得很古怪(我的头在这一点上很疼)-不知怎么的,两个列表是连接的,但我从来没有连接过它们



我发表了评论,并找到了代码中开始出现奇怪错误的地方。这应该是一个滑动窗口的问题,当我滑动窗口时,它应该将窗口列表添加到结果列表中。但由于某种原因,当我更新窗口列表时,它似乎也在更新结果列表???但它在我甚至没有提到结果列表的时候更新了?

def find_subarrays(arr, target):
result = []
start = 0
window = []
product = 1
print("target", target)
for end in range(len(arr)):
print("check Result", result)
print("arr[end]", arr[end])
window.append(arr[end]) # Somehow the variables window and result are connected
print("check Result 2", result, "hmm",window)
print("firstR ", result)
result.append(window)
print("secondR ", result)

# print("result", result)
return result
find_subarrays([2, 5, 3, 10], 30)

关于。建议的复制品:

我没有在结果列表上做乘法,为了简化并关注问题的根源,我删除了他们实际代码应该做的事情。

对于每个循环,窗口列表也会发生变化,因为它添加了输入arr的每个元素,并在每个循环结束时将其添加到结果数组中。我在最后得到的输出是同一个数组多次吗?但变化发生在一个奇怪的地方,我甚至没有修改结果数组。

您正在使用窗口变量追加到结果列表中。这就是造成这种snyc结果的原因。您可以使用以下代码段来解决此问题。

result.append([*window])

最新更新