Почему меняются все списки в моем списке Python

я пишу код для морского боя, который будет подсказывать куда лучше всего стрелять и для этого использую вложенный список, но с ним происходит какая та странная ошибка. Вкратце, когда я хочу пометить зону в которой может быть корабль(а именно в список под определенным индексом), то прибавляю туда единицу. Однако единица прибавляется во все списки под одинаковым индексом. Напоминает случай, когда ты пытаешься продублировать список с помощью s1 = s, но там проблема в том, что они в памяти выглядят как 1 и та же переменная и поэтому оба меняются при изменение одного. Но возвращаясь к моему коду, я нигде ничего не дублирую, моя карта сама создается по параметрам которые ей задали. Вот код:

class flot:
    def __init__(self, size, quantity=1):
        self.size = size
        self.quantity = quantity
        self.radius = self.size * 3 + 6

    def get_info(self):
        print(f'Размер - {self.size}    Количество: {self.quantity},    Область: {self.radius}')

class map:
    def __init__(self, n, m):
        self.n = n
        self.m = m
        self.size = [[0] * n] * m

    def get_info(self):
        print(f'Размер {self.n} на {self.m}')
        a = input('Хотите увидеть карту? Да/Нет')
        if a == 'Да':
            for i in range(len(self.size)):
                print(self.size[i])
        
class shoot(map):
    def __init__(self, n, m, ships):
        super().__init__(n, m)
        self.size = [[0] * n] * m
        self.ships = ships
    
    def map_analiz(self):
        for s in range(len(self.ships)):
            ship = self.ships[s]
            long = ship.size

            for i in range(len(self.size) - long + 1):
                for j in range(len(self.size[i]) - long + 1):
                    if len(self.size[0]) - j + 1 >= long and 'X' not in self.size[i][j:j + long]: # X - english
                        for x in range(j, long + j):
                            self.size[i][x] += 1

            

x1 = flot(4, 3)
x1.get_info()
karta = map(10, 10)
karta.get_info()
karta1 = shoot(5, 5, [x1])
karta1.get_info()
karta1.map_analiz()
karta1.get_info()

Ответы (0 шт):