Подорож №19. Список списків або таблиця.

Таблиця.

Таблиця є одним із найзручніших структур для зберігання даних. Якщо пронумерувати стовпці і рядки таблиці, то їх перетин створює адресу. Через адресу можна звертатися до відповідних даних, редагувати та видаляти їх.

Припустимо, що маємо таблицю 3 Х 3 з даними:


Жовтим позначено номери стовпчиків та рядків

В мові програмування таблицю це двовимірний список.

table = [ [3,4,5] , [7,5,6] , [4,55,77] ]

Щоб звернутися до елемента таблиці необхідно вказати 2 індекси в квадратних дужках. На першому місці номер рядка, на другому – номер стовпчика. Пригадаймо, що нумерація індексів починається з 0. Елемент table[2][1] має значення 55

Наприклад:

print( table[2] [1] )

Результат буде 55

Виведення таблиці на екран

  Вікно редактора Python
# Створюємо таблицю як на зображенні.
table = [ [3,4,5] , [7,5,6] , [4,55,77] ]
for x in table: # цикл по елементах списку (по рядках)
     print(x) # Виводить кожен елемент списку (рядок таблиці).

Після натискання F5:

  Вікно редактора Python
>>>
[3, 4, 5]
[7, 5, 6]
[4, 55, 77]
>>>

Обхід таблиці в циклі

В багатьох задачах виникає необхідність звернутися до кожного елементу таблиці по черзі. Для цього використовують вкладені цикли. Для кожного індексу створюється окремий цикл. (принцип електролічильника)

Наступний приклад демонструє: в якому порядку відбувається "перебір" елементів таблиці. Зверніть увагу, що індекс b змінює номери стовпчиків від 0 до 2 тричі, тоді як індекс a змінює номери рядків від 0 до 2 один раз.

  Вікно редактора Python
table = [ [3,4,5] , [7,5,6] , [4,55,77] ]
for a in range(3):
     for b in range(3):
          print('[',a,'][',b,'] = ',table[a][b])

Після натискання F5:

  Вікно редактора Python

>>>
[ 0 ][ 0 ] = 3
[ 0 ][ 1 ] = 4
[ 0 ][ 2 ] = 5
[ 1 ][ 0 ] = 7
[ 1 ][ 1 ] = 5
[ 1 ][ 2 ] = 6
[ 2 ][ 0 ] = 4
[ 2 ][ 1 ] = 55
[ 2 ][ 2 ] = 77
>>>

Приклад

Таблиця 3 x 4 містить довільні цілі числа. Обчислити суму тільки від'ємних чисел.

  Вікно редактора Python
tab = [[3,-6,22, -9],[3,-6,22, -9],[3,-6,22, -9]]
summ =0
for a in range(3):
     for b in range(4):
          if tab[a][b] < 0:
              summ = summ + tab[a][b]
print(summ)

Практичні вправи

Задача

Дано: таблиця 4 х 4 з довільними значеннями цілих чисел. Програма має підрахувати:
a) Суму кутових елементів.

b) суму елементів кожного рядка окремо;

c) суму елементів розташованих по периметру;

d) суму елементів розташованих на діагоналях.

Для завдань b, c ,d бажано застосування циклу.