Python 我正在更改列表中的一个变量,并尝试在每次循环后重置

Python 我正在更改列表中的一个变量,并尝试在每次循环后重置,python,loops,Python,Loops,基本上,我有一个列表的桩,我从他们删除的东西。但是,在每次迭代之后,如果列表被更改,列表将保持不变。如何确保列表在每次迭代后都返回到原始状态 要重置列表,必须重新创建列表,或将其存储为tmp变量 在本例中,我决定将其存储为tmp变量 for num in range(len(boards)): boards[num] = boards[num] - move[1] print(boards) if xor(boards) == 0: winningMove

基本上,我有一个列表的桩,我从他们删除的东西。但是,在每次迭代之后,如果列表被更改,列表将保持不变。如何确保列表在每次迭代后都返回到原始状态

要重置列表,必须重新创建列表,或将其存储为tmp变量

在本例中,我决定将其存储为tmp变量

for num in range(len(boards)):
    boards[num] = boards[num] - move[1]
    print(boards)
    if xor(boards) == 0:
        winningMoves.append((boards[num], move[1]))
tmpBoard={}
for key in boards.keys():
   tmpBoard[key]=boards[key]
for num in range(len(boards)):
    boards[num] = boards[num] - move[1]
    print(boards)
    if xor(boards) == 0:
        winningMoves.append((boards[num], move[1]))
        borads=tmpBoard #<-- reset list
tmpBoard={}
对于键盘。键():
tmpBoard[键]=板[键]
对于范围内的num(len(boards)):
单板[num]=单板[num]-移动[1]
印刷(电路板)
如果xor(电路板)==0:
winningMoves.append((板[num],移动[1]))
硼砂=tmpBoard#

结果只是在添加数字后将其添加回列表。无论如何,感谢您的帮助

这是相同的
列表
,为什么您希望它不会更改?如果你不想影响原始列表,你必须使用列表的副本。我想说的是,我想修改包含堆的原始列表,然后对其应用函数。然后,如果结果等于0,则会将其附加到获胜的移动列表中。然后我想转到原始列表中的下一堆,并让第一堆也还原为原始。这是错误的。Python赋值不会复制。这样更好吗?不。赋值不会在Python中复制。在第一次迭代后,您将继续使用同一对象。另外,在这个问题上,我很确定boards是一个列表。。。你应该使用
来输入一些dict
而不是
来输入一些dict.keys()。你有一个拼写错误“borads”。只需保存
board[num]
。请阅读:,这是由经验丰富的Ned Batchelderan编写的。另一个选项是在更改前保存
board[num]
的值,以便在测试后恢复。为什么只有在成功的情况下才恢复它?
for num in range(len(boards)):
    boards[num] = boards[num] - move[1]
    if xor(boards) == 0:
        winningMoves.append((boards[num], move[1]))
        boards[num] = boards[num] + move[1]