Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
附加时Python列表更新元素_Python_List_Pygame_Append_Updating - Fatal编程技术网

附加时Python列表更新元素

附加时Python列表更新元素,python,list,pygame,append,updating,Python,List,Pygame,Append,Updating,我有一个python列表,我想在其中添加一个列表。该列表的声明如下: data = [] data.append(prev_board) 然后,我在列表中附加以下内容: [0, 0, 0, 0, 0, 0, 0, 1, 0] 在此之后,我想附加另一个列表: [0, 0, 0, 0, 0, -1, 0, 1, 0] 然后,当我打印出整个列表时,它会显示: [[0, 0, 0, 0, 0, -1, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 1, 0]] 当我试图将其

我有一个python列表,我想在其中添加一个列表。该列表的声明如下:

data = []
data.append(prev_board)
然后,我在列表中附加以下内容:

[0, 0, 0, 0, 0, 0, 0, 1, 0]
在此之后,我想附加另一个列表:

[0, 0, 0, 0, 0, -1, 0, 1, 0]
然后,当我打印出整个列表时,它会显示:

[[0, 0, 0, 0, 0, -1, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 1, 0]]
当我试图将其打印出来时:

[[0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, -1, 0, 1, 0]]
当我像这样附加它时,它更新了数组的第一个元素:

data = []
data.append(prev_board)
prev_board存储要附加到列表的列表。我的全部代码如下:

def gather_training_data(games):
global data
global game_won

for each_game in range(games):
    game = Game()
    while True:
        pygame.event.get()
        game.create_board()
        if not game_won:
            prev_board = game.board
            move = game.random_move()
            data.append(prev_board)
            print data
            time.sleep(5)
        else:
            break
    game_won = False
    time.sleep(1)
    window.fill((255, 255, 255))

return data

那么,当我只是在列表中添加一个列表时,为什么列表的第一个元素会更新呢?

您必须使用同一个列表并对其进行修改-类似这样的事情

>>> a = [1,2,3,4,5]
>>> b = []
>>> b.append(a)
>>> b
[[1, 2, 3, 4, 5]]
现在更改

现在b包含a

为了防止这种情况发生,请创建要追加的新列表,而不是对同一列表进行变异,或者在无法帮助的情况下追加变异列表的副本。

您必须使用相同的列表并对其进行变异-类似这样

>>> a = [1,2,3,4,5]
>>> b = []
>>> b.append(a)
>>> b
[[1, 2, 3, 4, 5]]
现在更改

现在b包含a

为了防止这种情况发生,请创建要追加的新列表,而不是对同一列表进行变异,或者在无法帮助的情况下追加变异列表的副本。

您的外部列表中有两次相同的列表。不要使用全局您的外部列表中有两次相同的列表。不要使用全局。那么我可以做些什么来防止这种情况发生?那么我可以做些什么来防止这种情况发生?