Поняття двовимірного масиву
Одновимірний масив можна уявити як таблицю, що містить один рядок або стовпець даних. Однак нам часто доводиться працювати з таблицями, у яких кілька рядків і кілька стовпців. Для опрацювання даних таких таблиць зручно використовувати двовимірний масив. Кожний елемент такого масиву визначається двома індексами.
Двовимірний масив — таблиця з \(n\) рядків, m стовпців.
Масив називається двовимірним, якщо для задання місцеположення елемента в масиві необхідно вказати значення двох індексів.
Приклад:
Як двовимірний масив можна уявити стільці в залі кінотеатру, де кожний стілець визначається двома індексами — номером ряду і номером стільця в ряду. У вигляді двовимірного масиву легко подати поле шахівниці або популярної комп’ютерної гри Сапер. Матриця екрана вашого монітора також є двовимірним масивом пікселів.
Двовимірні списки —списки списків
У мові Python для опрацювання двовимірних масивів використовуються двовимірні списки, тобто списки, кожен елемент яких є списком значень.
Приклад:
Збережемо дані таблиці, поданої на рис.1, у змінній \(а\).
Рис.1
a = [[1, 2, 3, 12], [23, 45, 13, 4], [8, 6, 7, 11]]
Кожний елемент двовимірного списку а також є списком, що містить дані з одного рядка таблиці. Довжина списку len(a) = 3.
Звернутися до елемента двовимірного списку (рядка таблиці) можна за його індексом:
a[0] = [1, 2, 3, 12].
a[0] = [1, 2, 3, 12].
Для перебору рядків списку використовується цикл for.
Можна перебрати індекси вкладених списків — елементів двовимірного списку .
for i in range (len(a)):
print(a[i])
print(a[i])
Можна перебрати всі наявні у двовимірному списку елементи — рядки таблиці.
for row in a:
print(row)
print(row)
При використанні обох варіантів циклу в консоль буде виведено наведене на рис. 2.
Рис.2
Положення елемента в таблиці визначається 2 індексами — номером рядка і номером стовпця, отже для доступу до елемента у вкладеному списку слід указати два індекси (рис. 3).
Рис.3
Елемент, розташований на перетині і-го рядка і j-го стовпця масиву a, позначають a[і][j].
Зверни увагу!
У двовимірних масивах перший індекс завжди вказує на номер рядка, а другий — на номер стовпця таблиці.
Головну діагональ масиву утворюють елементи, для яких i == j.
Приклад:
Виведення значень списку а в консоль порядково:
Згадаємо, що параметр end=' ' метода print() потрібен, щоб після виведення курсор залишився в тому самому рядку. Оператор print() з порожнім списком виведення переводить курсор на наступний рядок.
Створення двовимірного списку для зберігання масиву з n рядків та m стовпців
Створення порожнього списку а з 3 рядків: a = [[], [], []]
Нехай потрібно створити список для збереження даних прямокутної таблиці, у якій n рядків і m стовпців, і заповнити його нулями.
Це можна зробити в такий спосіб (рис. 4):
n, m = 3, 4
a = [] # Створюємо порожній список
for i in range(n): # Додаємо n елементів
a.append([0]*m) # Кожен елемент — список з m нулів
Рис.5
Двовимірний масив можна створити з використанням генератора. Список [0]*m заново генерується для заповнення чергового елемента списку а.
a = [list(input().split()) for i in range(n)]
Уведення значень двовимірного масиву з клавіатури
Щоб заповнити двовимірний список цілими значеннями елементів двовимірного масиву з n рядків і m стовпців, уводячи значення елементів з клавіатури, слід n разів виконати дії:
1) увести рядок s, що містить m чисел, відокремлених пробілами, і розбити рядок s функцією split() на підрядки;
2) функцією map() кожний підрядок рядка s перетворити на числовий тип;
3) функцією list() отриману послідовність перетворити у список row;
1) увести рядок s, що містить m чисел, відокремлених пробілами, і розбити рядок s функцією split() на підрядки;
2) функцією map() кожний підрядок рядка s перетворити на числовий тип;
3) функцією list() отриману послідовність перетворити у список row;
4) список row додати до списку а.
n = int(input()) # Кількість рядків масиву
a = [] # Створюється порожній список
for i in range(n):
s= input().split()
row=list(map(int, s))
a.append(row)
n = int(input()) # Кількість рядків масиву
a = [] # Створюється порожній список
for i in range(n):
s= input().split()
row=list(map(int, s))
a.append(row)
Заповнення двовимірного масиву випадковими числами
Заповнимо двовимірний список випадковими значеннями елементів двовимірного масиву з n рядків і m стовпців:
from random import randint
n, m=3, 4
a = [[] for i in range(n)]
for i in range(n):
for j in range(m):
a[i] .append(randint(1,10)) # Додавання чергового елемента до і-го рядка
a = [[] for i in range(n)]
for i in range(n):
for j in range(m):
a[i] .append(randint(1,10)) # Додавання чергового елемента до і-го рядка
print (a)
Результат виведення списку а в консоль може бути таким:
[[7, 4, 4, 2], [10, 9, 1, 10], [6, 7, 2, 2]]
Надання значень елементам двовимірного масиву за формулою
Задання значень елементів двовимірного масиву за певною формулою має місце у випадках, коли значення елемента залежить від його індексів. Приклад:
Заповнимо вкладений список а елементами таблиці Піфагора:
Нехай кожний елемент масиву 5х5 дорівнює більшому з його індексів:
- елементам головної діагоналі присвоїти значення 1,
- елементам, що розташовані вище головної діагоналі, — значення 2,
- елементам, що розташовані нижче головної діагоналі, — значення 0.
Джерела:
Інформатика : підруч. для 9 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2022.