new_list = old_list.copy () не работает, как и другие способы копирования списка - PullRequest
0 голосов
/ 24 октября 2019

Я пробовал много способов скопировать список в другой список и не заставить их взаимодействовать друг с другом. Однако, когда я запускаю этот код под Map внутри функции next_turn, она изменяется, когда new_Map изменяется, разрушая результат. Как я могу это исправить? (Мой python ver 3.7)

def next_turn(Map) :
    num_y = [-1, 0, 1, -1, 1, -1, 0, 1]
    num_x = [1, 1, 1, 0, 0, -1, -1, -1]
    flag = 0
    new_Map = Map.copy()
    for i in range(len(Map)) :
        for j in range(len(Map[0])) :
            sum = 0
            for p in range(8) :
                try :
                    if(Map[i + num_y[p]][j + num_x[p]] == 1) : sum +=1
                except Exception as e :
                    pass
            if (sum == 2 or sum == 3) :
                new_Map[i][j] = 1
                if(flag == 0 and (i ==0 or j == 0)) :
                    flag = 1
            else :
                new_Map[i][j] = 0
    return (new_Map, flag)

def life_game(Map, num, flag) :
    for i in range(num) :
        if (flag == 1) :
            increase_map(Map)
        Map, flag = next_turn(Map)

    return Map
...