Основні типи задач опрацювання елементів списку
Уявіть себе головним бухгалтером підприємства, який аналізує масив значень заробітної платні співробітників за місяць. При такому аналізі можуть бути поставлені такі задачі, як знайти загальну суму виплат, середнє значення, кількість нарахувань більше певного значення, найбільше значення тощо. Розв’язування багатьох прикладних задач, що потребують опрацювання сукупності однотипних значень, базується на типових алгоритмах опрацювання елементів списку.
Опрацювання елементів списку виконується в циклі, де параметр циклу послідовно набуває значень елементів списку або їх індексів.
Розглянемо це на прикладі виведення списку на екран:
Спосіб доступу до елементів списку |
Приклад |
Послідовно звертатися до елементів за їх
індексами
|
for i in range(len(a)): print(a[i]) |
Перебрати всі наявні в списку елементи. Застосовується, коли не потрібно змінювати
значення елементів списку
|
for item in a: print(item) |
Заміна значень елементів списку
Заміна значень усіх елементів списку
Алгоритм: послідовно перебрати всі елементи списку і значення чергового елемента змінити за певним правилом (наприклад, змінити знак елементів на протилежний, надати всім елементам нульові значення, збільшити значення всіх елементів на певну величину).
Приклад:
Подвоїмо значення елементів списку а = [2, 5, 14, 62, –5].
a = [2, 5, 14, 62, –5]
for i in range(5):
a[i] = a[i]*2 # Список набуває значення а = [4, 10, 28, 124, –10]
a = [2, 5, 14, 62, –5]
for i in range(5):
a[i] = a[i]*2 # Список набуває значення а = [4, 10, 28, 124, –10]
Заміна значень із перевіркою умови
Алгоритм: послідовно перебрати всі елементи списку; якщо черговий елемент відповідає деякій умові, його значення змінити за певним правилом. Як умова може перевірятися значення елемента списку на кратність деякому числу, додатність, рівність нулю тощо. Може перевірятися і значення індексу елемента списку (так, змінюються елементи, що стоять на парних місцях).
Приклад:
Поділимо на 2 парні елементи списку а = [2, 5, –14, 62, –5].
for i in range(5):
for i in range(5):
if a[i]%2 == 0: a[i] = a[i]//2 # Список набуває значення а = [1, 5, 7, 31, –5]
Елементи списку а = [2, 5, 14, 62, –5], що мають парні індекси, замінити нулем (рис.1).
a = [2, 5, 14, 62, –5]
for i in range(5):
if i%2 == 0: a[i] = 0
print(a) # Буде надруковано [0, 5, 0, 62, 0]
Елементи списку а = [2, 5, 14, 62, –5], що мають парні індекси, замінити нулем (рис.1).
a = [2, 5, 14, 62, –5]
for i in range(5):
if i%2 == 0: a[i] = 0
print(a) # Буде надруковано [0, 5, 0, 62, 0]
Рис.1
Визначення кількості елементів із заданою властивістю
Приклад:
Визначимо кількість додатних елементів списку а = [2, 5, 14, 62, –5].
k = 0 # Лічильник елементів із заданою властивістю
for item in a:
if item >0: k = k+1
print('k =', k) # Буде надруковано k = 4 (рис.2)
k = 0 # Лічильник елементів із заданою властивістю
for item in a:
if item >0: k = k+1
print('k =', k) # Буде надруковано k = 4 (рис.2)
Рис.2
Визначення найбільшого (найменшого) елемента списку
Python має вбудовані функції max(list), min(list). Слід розуміти сутність алгоритму пошуку найбільшого (найменшого) елемента списку.Алгоритм: припустити, що найбільшим є нульовий елемент списку, після чого послідовно перебрати елементи масиву, починаючи з другого; якщо черговий елемент більший за максимальний, його значення запам’ятати як максимальне.
Приклад:
mx = a[0] # Змінна для збереження найбільшого значення елемента
k = 0 # Змінна для збереження індексу найбільшого елемента
for i in range(1, len(a)): # Перебираємо елементи, починаючи з першого
if а[i]>mx: # Якщо і-й елемент більший за mx,
mx = a[i] # значення mх замінюється на значення а[i];
k = i # у змінній k запам’ятовується значення індексу і
k = 0 # Змінна для збереження індексу найбільшого елемента
for i in range(1, len(a)): # Перебираємо елементи, починаючи з першого
if а[i]>mx: # Якщо і-й елемент більший за mx,
mx = a[i] # значення mх замінюється на значення а[i];
k = i # у змінній k запам’ятовується значення індексу і
Обчислення суми (добутку) елементів із заданою властивістю
Python має вбудовану функцію sum(list), але, якщо потрібно знайти суму не всіх елементів, а лише тих, що задовольняють деякій умові, потрібно послідовно перебрати всі елементи списку; якщо черговий елемент відповідає деякій умові, додати його до суми. Приклад:
Знайдемо суму додатних елементів списку а = [2, –3, 1, 6, –5].
suma = 0 # Змінна для збереження значення суми
for item in a:
if item>0: suma = suma + item
print ('suma = ', suma) # Буде надруковано suma = 9
suma = 0 # Змінна для збереження значення суми
for item in a:
if item>0: suma = suma + item
print ('suma = ', suma) # Буде надруковано suma = 9
Рис.3
Приклад:
Знайдемо добуток ненульових елементів списку а = [2, 0, 2, 6, 0].
dobutok = 1 # Змінна для збереження значення суми
for item in a:
if item != 0: dobutok = dobutok*item
print('dobutok = ', dobutok) # Буде надруковано dobutok = 24
dobutok = 1 # Змінна для збереження значення суми
for item in a:
if item != 0: dobutok = dobutok*item
print('dobutok = ', dobutok) # Буде надруковано dobutok = 24
Джерела:
Інформатика : підруч. для 9 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2022