СписокИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list. хранит элементы в один ряд. Но данные часто двумерны: шахматная доска, таблица в Excel, экран из пикселей. Такую таблицу удобно представить как список, элементы которого — тоже списки (строкиТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str). таблицы). Это и есть матрица.
▶ matrix.py
Доступ двойной: matrix[строка][столбец]. Сначала matrix[0] достаёт первую строку (это список [1, 2, 3]), затем [2] берёт из неё элемент с индексом 2. Оба индексаНомер позиции элемента в последовательности. В Python нумерация с нуля: первый элемент — индекс 0. — с нуля, как обычно.
📝Заметка
Запомните порядок: сначала строка, потом столбец — matrix[row][col]. Это как «этаж, потом квартира». Перепутаете порядок — попадёте не в ту ячейку или получите IndexError.
Перебор матрицы вложенными циклами
Чтобы пройти всю таблицу, нужны два циклаКонструкция, повторяющая блок кода: for перебирает элементы, while — пока условие истинно.: внешний — по строкам, внутренний — по элементам строки. Это самый частый шаблон работы с матрицами.
▶ matrix-loop.py
▶ matrix-indexes.py
Два способа решают разные задачи: перебор «по значениям» (for row in matrix) короче и читается легче, а перебор «по индексам» (range(rows)) нужен, когда важны сами координаты ячейки — например, чтобы изменить элемент или сравнить с соседом.
⚠️Осторожно
Ловушка создания матрицы. Запись grid = [[0] * 3] * 3 создаёт три ссылки на один и тот же внутренний список — изменив одну ячейку, вы измените «весь столбец». Правильно создавать через генератор: grid = [[0] * 3 for _ in range(3)] — так каждая строка отдельная.
▶ matrix-create.py
💡Совет
Предскажите вывод. Что напечатает код ниже после изменения grid[0][0] = 9, если матрица создана «неправильным» способом [[0]*3]*3? Запустите и убедитесь в коварстве общих ссылок.
▶ predict-matrix.py
Напечатается [[9, 0, 0], [9, 0, 0], [9, 0, 0]] — девятка «протекла» во все три строки, потому что это одна и та же ссылка. Вот почему матрицы создают через генератор списков.
⚠️ Частые ошибки новичков
Ошибка. Выйти за границу строки по столбцу. У матрицы 2×3 нет ячейки matrix[1][3] — столбцы только 0, 1, 2. Запустите код, увидите IndexError, и почините индекс на существующий (например, 2).
▶ broken-matrix.py
Заданиерешение.py
Дана матрица m = [[1, 2], [3, 4], [5, 6]]. Посчитайте сумму всех её элементов и сохраните в переменную total.
Заданиерешение.py
Дана квадратная матрица m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]. Посчитайте сумму элементов на главной диагонали (где номер строки равен номеру столбца) и сохраните в diag.
❓Проверь себя
Как обратиться к элементу во 2-й строке и 1-м столбце (нумерация с нуля)?
Почему [[0]*3]*3 — опасный способ создать матрицу?
Что вернёт len(matrix) для матрицы из 4 строк по 5 столбцов?
ℹ️Важно
✅ Что вы узнали
Матрица — список списков; matrix[row][col] — доступ к ячейке.
Перебор — двумя циклами: по строкам и по элементам строки.
len(matrix) — число строк, len(matrix[0]) — число столбцов.
Создавать матрицу нужно через [[0]*c for _ in range(r)].
Комментарии
Загрузка…
Загрузка комментариев…