• Как изменить элемент одного списка, который равен другому списку?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну код ваш совсем не рабочий, первое отступы (у вас 8 должно быть 4), второе new_pole вы должны объявить до цикла, до присваивания в цикле дело не дойдет когда new_pole[i_col][i_row] python выдаст ошибку уже вот здесь что не знает что такое new_pole.
    Теперь ответ на ваш вопрос, Когда вы делаете что то типа
    list1 = [1,2,3]
    new_list = list1

    вы не создаете два объекта вы создаете две ссылки на один и и тот же объект [1,2,3]. И скажем если вы сделаете
    list1.append(4) У вас будут изменения и в new_list. Потому что объект всего один а ссылки на него две.
    Что бы избежать это нужно использовать deepcopy
    Вот ваш код но в рабочей версии.
    from copy import deepcopy
    pole = [['x', 'x', 'x', '.'], ['.', '.', '.', '.'], ['x', '.', 'x', 'x'], ['x', '.', '.', '.']]
    new_pole = deepcopy(pole)
    for i_row in range(len(pole)):
        for i_col in range(len(pole[i_row])):
            new_pole[i_col][i_row] = pole[i_row][i_col]
    print(pole)
    print(new_pole)
    Ответ написан
    1 комментарий