Почему меняются все списки в моем списке 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()