gpt4 book ai didi

python - 该元素的值与附加到列表中的值不同

转载 作者:行者123 更新时间:2023-12-01 01:44:56 24 4
gpt4 key购买 nike

这是我的代码的一部分。当我执行程序时,我得到的输出包含在代码下方。

    currentPos = playerPosition
modifiedCords = freespaceCords
pathList = []
while(True):
adjacentList = []
potentialMoveList = []

currentPos[0] = currentPos[0] - 1
adjacentList.append(currentPos)
print(currentPos)

currentPos[0] = currentPos[0] + 2
adjacentList.append(currentPos)
print(currentPos)

currentPos[0] = currentPos[0] - 1
currentPos[1] = currentPos[1] - 1
adjacentList.append(currentPos)
print(currentPos)

currentPos[1] = currentPos[1] + 2
adjacentList.append(currentPos)
print(currentPos)
currentPos[1] = currentPos[1] - 1

print("")
print(adjacentList)
print("")

输出:

[0, 1]

[2, 1]

[1, 0]

[1, 2]


[[1, 1], [1, 1], [1, 1], [1, 1]]

我希望 4 个元素的列表包含前面四个单独打印的元素,例如:

[ [0,1] , [2,1] , [1,0] , [1,2] ]

请有人为我的问题提供解决方案,解释为什么他们的解决方案有效,而我的代码无效。

谢谢。

最佳答案

当你这样做时

adjacentList.append(currentPos)

您将对列表 currentPos 的引用附加到 adjacentList。因此,每次更改 currentPos 时,您实际上也在更改 adjacentList 中的元素。如果您在中间步骤中打印 adjacentList,您就会明白我的意思。

要避免这种情况,您可以附加列表的副本:

adjacentList.append(list(currentPos))

这是一个示例,您可以在其中看到我所描述的内容:

>>> l = [1, 1]
>>> adjacentList = []
>>> adjacentList.append(l)
>>> adjacentList
[[1, 1]]
>>> l[1] = 2
>>> adjacentList
[[1, 2]]

关于python - 该元素的值与附加到列表中的值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51477616/

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