Статья Автор: Корельская Елена Юрьевна

Теория

В современном мире табличные данные стали неотъемлемой частью обработки информации. Практически любое программное обеспечение активно использует структурированные таблицы для хранения и обработки различных сведений.
Примерами применения матриц являются:
  • Игры на клетчатых досках (шашки, крестики-нолики и другие)
  • Математические вычисления
  • Анализ данных
  • Системы управления базами данных

С точки зрения математики подобные табличные данные представляют собой матрицы.
Определение
Матрица — это упорядоченная прямоугольная таблица, элементами которой могут быть числа, символы или другие типы данных.

В языке программирования Python существует удобный способ хранения и обработки матриц — двумерные списки (или двумерные массивы), которые представляют собой структуру «список списков». То есть это список, элементами которого являются списки.
Например

 
Матрица Запись в Python
3 5 7
1 2 9
4 6 10
2 5 4
a = [[3, 5, 7], [1, 2, 9], [4, 6, 10], [2, 5, 4]]


 
При работе с табличными данными необходимо учитывать, что доступ к элементу матрицы осуществляется указанием двух значений: сначала указывается номер строки, указывается номер столбца. В Python используется нумерация с нуля. При обращении к элементу матрицы с индексом, который выходит за допустимые границы, возникает ошибка.
Например,
 
Матрица Запись в Python
  Номер столбца
0 1 2
Номер строки 0 3 5 7
1 1 2 9
2 4 6 10
3 2 5 4
a = [[3, 5, 7], [1, 2, 9], [4, 6, 10], [2, 5, 4]]
print(a[1][2]) #9
print(a[2][1]) #6
print(a[1][3]) #ошибка


 


Рассмотрим способы задания матриц:
  1. Задание перечислением элементов:
  • в одну строку:
a = [[3, 5, 7], [1, 2, 9], [4, 6, 10], [2, 5, 4]]
 
  • в несколько строк:
a = [[3, 5, 7],
     [1, 2, 9],
     [4, 6, 10],
     [2, 5, 4]]

 
  1. Генерация матрицы, где все элементы изначально получают одинаковое значение, например «0». После создания такой матрицы можно изменять значение каждого элемента по отдельности.
  • С использованием цикла:
a = []
for i in range(n):
    a.append([0] * m)
  • С использованием списочного выражения:
a = [[0] * m for i in range(n)]

3. Ввод целочисленно й матрицы с клавиатуры из n строк и m столбцов
a = [] # пустой список
for i in range(n): # цикл по количеству строк
    x = list(map(int, input().split())) # считываем строку в список
    a.append(x) # добавляем список x в список a
Рассмотрим способы вывода матриц:


2. Табличный вывод
  • С использованием индексов


Обратите внимание, что переменная i перебирает индексы строки, а j – индексы столбца. Важно, в каком порядке стоят циклы по i и j.
 
Фрагмент программы Вывод
a = [[3, 5, 7], [1, 2, 9], [4, 6, 10], [2, 5, 4]]
for i in range(4):
    for j in range(3):

        print(a[i][j], end=' ')
    print()

 
3 5 7
1 2 9
4 6 10
2 5 4
 
a = [[3, 5, 7], [1, 2, 9], [4, 6, 10], [2, 5, 4]]
for j in range(3):
    for i in range(4):

        print(a[i][j], end=' ')
    print()

 
3 1 4 2
5 2 6 5
7 9 10 4
 
  • Без использования индексов


Важно запомнить:
  • при работе с матрицами необходимо чётко различать переменные, которые определяют количество строк и количество столбцов
  • необходимо контролировать, чтобы переменные, определяющие размеры матрицы (количество строк и столбцов), находились в допустимых пределах
Печать