Метод умножения списка создаёт несколько ссылок на один и тот же внутренний список, а не независимые копии, поэтому все строки в 𝚖𝚊𝚝𝚛𝚒𝚡 указывают на один объект. Изменение элемента 𝚖𝚊𝚝𝚛𝚒𝚡 фактически меняет общий вложенный список, и та же единица появляется в каждой строке. Проверить это можно по 𝚒𝚍: [𝚒𝚍(𝚛𝚘𝚠) 𝚏𝚘𝚛 𝚛𝚘𝚠 𝚒𝚗 𝚖𝚊𝚝𝚛𝚒𝚡] даёт одинаковые значения.
Как правильно: создавать каждую строку заново, например с генератором списков:
𝚖𝚊𝚝𝚛𝚒𝚡 = [[𝟶 𝚏𝚘𝚛 _ 𝚒𝚗 𝚛𝚊𝚗𝚐𝚎(𝟹)] 𝚏𝚘𝚛 _ 𝚒𝚗 𝚛𝚊𝚗𝚐𝚎(𝟹)]
Теперь каждая строка независима, и изменение одной не затрагивает остальные.
Для копирования уже созданной матрицы используйте копирование по элементам, например 𝚕𝚒𝚜𝚝(𝚖𝚊𝚙(𝚕𝚒𝚜𝚝, 𝚖𝚊𝚝𝚛𝚒𝚡)) или 𝚍𝚎𝚎𝚙𝚌𝚘𝚙𝚢 из модуля 𝚌𝚘𝚙𝚢, если внутри есть вложенные структуры.
Post #4443
744
- 👍 2
- ❤ 1