gpt4 book ai didi

python - 看似等效的列表初始化导致不同的行为

转载 作者:行者123 更新时间:2023-12-05 02:57:59 24 4
gpt4 key购买 nike

<分区>

我正在解决 this challenge on HackerRank在 Python 3 中并提出了以下解决方案:

def dynamicArray(n, queries):
seqList = [[] for _ in range(n)]
lastAnswer = 0
result = []

for query in queries:
if query[0] == 1:
seqList[(query[1] ^ lastAnswer) % n].append(query[2])
elif query[0] == 2:
seq = seqList[(query[1] ^ lastAnswer) % n]
lastAnswer = seq[query[2] % len(seq)]
result.append(lastAnswer)

return result

这工作正常并通过了所有测试用例。

问题是当我从以下更改 seqList 的初始化时:

seqList = [[] for _ in range(n)]

对此:

seqList = [[]] * n

然后所有测试用例都失败了,我不知道为什么。代码中没有其他更改。

我什至创建了以下简单的测试用例来比较这些初始化方法的结果:

n = 3

a1 = [[]] * n
a2 = [[] for _ in range(n)]

print(a1)
print(a2)
print(a1 == a2)

结果如预期:

[[], [], []]

[[], [], []]

True

如果有人能向我解释这种行为,我将不胜感激。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com