Масиви в Python
Масив - це структурований набір даних, усі елементи якого мають один тип. Наприклад цілий тип даних, дійсний, рядок, та інші.
Різниця між масивом і списком - елементи масиву мають один тип даних, а елементи списку можуть мати різний тип даних.
Всі методи та функції дійсні і для масивів.
Розрізняють одновимірні - лінійні і багатовимірні - табличні масиви.
Як і в списках, перелік елементів масиву починаємо з нуля.
Кожен масив має ім'я. Елемент масиву записують як ім'я масиву і в квадратних дужках вказують номер елементу масиву.
Наприклад: a[0], a[1]. a[2], ... a[n]
Можемо вказати всі елементи масиву таким чином:
a = [5, -6, -9, 0. 10, -5] або використати пустий масив: a =[].
Створити масив можна кількома способами. Перший з них - ввести його значення з клавіатури, другий - обчислити значення математичного виразу та присвоїти їх масиву. Перелічення всіх елементів масиву є самим простим способом.
Наприклад: Створити масив з переліком відомих браузерів. та вивести їх на екран.
m = ['Google Chrome', 'Firefox', 'Edge', 'Safari', 'Opera', 'Brave']
n = len(m)
for i in range(n):
print('m[', i,']=', m[i], end = ' ')
Функція end = ' ' дозволяє вивести наш масив в рядок.
Результат:
m[ 0 ]= Google Chrome m[ 1 ]= Firefox m[ 2 ]= Edge m[ 3 ]= Safari m[ 4 ]= Opera m[ 5 ]= Brave
Приклад, коли створенням масиву є математичний вираз:
Дано вираз x = 5*i + pow(2, i). Розробити код створення масиву елементами якого є значення n чисел цього виразу.
import math
n = int(input('Введіть довжину масиву '))
m = []
for i in range(1, n+1):
a = 5*i + pow(2, i)
m.append(a)
for i in range(n):
print(m[i], end=' ')
Результат:
Введіть довжину масиву 5
7 14 23 36 57
Наступне завдання, яке ми розглянемо є класичним прикладом роботи з масивами.
Розробити код створення числового масиву методом введення чисел з клавіатури. Обчислити суму елементів масиву та їх середнє значення.
n = int(input('Введіть довжину масиву '))
m = []
for i in range(n):
a = float(input('Введіть елемент масиву '))
m.append(a)
s = 0
for i in range(n):
s = s + m[i]
print('s=', s) # сума
average = s/n
print('average = ', average ) # середнє значення
Результат:
Введіть довжину масиву 5
Введіть елемент масиву 20
Введіть елемент масиву 40
Введіть елемент масиву 10
Введіть елемент масиву 10
Введіть елемент масиву 10
s= 90.0
average = 18.0
Це метод циклічного накопичення суми.
Спочатку сума дорівнює нулю. Потім до цієї суми додаємо нульовий елемент, потім перший, потім другий і т.д. до останнього елементу.
Запитання для перевірки знань:
1. У чому полягає різниця між масивом і списком?
- немає різниці
- різниця в кількості елементів
- різниця в запису елементів
- різниця в типах даних елементів
2. Назвіть структуру масивів.
- назва, елементи в квадратних дужках
- m[0], m[1], m[2], m[3], ... m[n]
- m = (5.4,3,2.1)
3. Як створити порожній масив?
- print('Введіть порожній масив ')
- m = 0
- n = []
- print(m[])
4. Опишіть загальну структуру одновимірного масиву.
- масив має назву, елементи певного типу даних, які записані в квадратних дужках
- масив має назву, елементи двох типів даних, які записані в квадратних дужках
- масив має назву, елементи певного типу даних, які записані в круглих дужках
- масив не має назви, елементи певного типу даних, які записані в круглих дужках
5. Як здійснюється звернення до елементів масиву t = [5, 10, 20]
- t = 5, t =10, t =20
- t[1] = 5
- t[2] = 20
- t[1] = 5, t[2] = 10, t[3] = 20
6. Назвіть основні способи створення масиву.
- введення масиву з клавіатури
- виведення масиву
- введення за допомогою математичних формул
- введення з клавіатури, елементи масиву обчислений вираз.
Завдання
Завдання з підручника Руденко Інформатика 9 клас для поглибленого вивчення, 2022р. с. 119
Завдання 1. Розробіть код створення масиву, елементами якого є назви річок: Дніпро, Дністер, Прип'ять, Псел, Південний Буг. Виведіть масив на екран.
# Завдання 1.
m = ['Дніпро', 'Дністер', 'Прип'ять', 'Псел', 'Південний Буг' ]
n = len(m)
for i in range(n):
print('m[', i,']=', m[i], end = ' ')
Завдання 2. Розробіть код створення масиву, елементами якого є цілі числа: 21, 40, 53,17,33. Виведіть масив на екран.
# Завдання 2.
m = [21, 40, 53, 17, 33 ]
n = len(m)
for i in range(n):
print('m[', i,']=', m[i], end = ' ')
Завдання 3. Розробіть код створення масиву, елементами якого є сім випадкових чисел в діапазоні від 2 до 13. Виведіть масив на екран.
# Завдання 3.
import random
n = int(input('Введіть довжину масиву '))
m = []
for i in range(n):
a = random.randint(2, 13)
print(a, end = ' ')
m.append(a)
for i in range(n):
print('m[', i, ']=', m[i], end = ' ')
Завдання 4. Розробіть код створення масиву, елементами якого є п'ять перших членів арифметичної прогресії, перший член якої дорівнює 3, а її різниця 4. Вивести масив на екран.
# Завдання 4.
n = 5
m = [3]
a = 4
k = 0
for i in range(4):
k = m[i] + a
m.append(k)
for i in range(5):
print('m[', i, ']=', m[i], end = ' ')
Завдання 5. Розробіть код створення масиву із семи дійсних чисел, які вводяться з клавіатури. Обчисліть суму його елементів.
# Завдання 5
m = []
s = 0
for i in range(6):
a = float(input('Введіть дійсне число '))
m.append(a)
for i in range(6):
s = s + m[i]
print('s =', s)
Завдання 6. Розробіть код обчислення середнього значення масиву, елементами якого є кількість населення в п'яти найбільших українських містах.
# Завдання 6
m = [2800000, 1443000, 990000, 906000, 731000]
s =0
for i in range(4):
s = s + m[i]
print('s =', s)
average = s/5
print('average =', average)
Класичні алгоритми опрацювання значень елементів масиву
До таких алгоритмів належать:
- пошук заданого елемента
- визначення індексу елемента з заданим значенням
- пошук максимального та мінімального значення
- обчислення кількості елементів
- упорядкування елементів
Пошук елемента
Є декілька способів пошуку елементів, які відрізняються швидкістю пошуку та об'ємом пам'яті.
Лінійний пошук елементів:
Береться нульовий елемент і порівнюється з іншими.
Наприклад при пошуку мінімального чи максимального.
Тобто спочатку вважається, що m[0] найменший елемент. Порівнюємо з першим елементом. Якщо перший елемент менший, то тоді мінімальним є перший елемент, далі ми порівнюємо з другим елементом і т.д. тобто ми порівнюємо до тих пір, поки не знайдемо найменший елемент.
Двійковий пошук:
Нехай дано масив mas[0], mas[1], ...,mas[n–1], елементи якого впорядковано за зменшенням їхніх значень.
У процесі пошуку значення лівої і правої меж масиву будуть постійно змінюватися. Позначимо поточне значення лівої межі масиву змінною l, а значення правої межі — змінною p (початкові значення змінних: l = 0 і p = n–1). Спочатку в цьому масиві обирають елемент, розташований усередині масиву, — mas[i]. Значення індексу середнього елемента можна визначити за формулою i = (l+p)//2 (найближче ціле).
Значення середнього елемента порівнюють із ключовим значенням а, що відшукується. Якщо а = mas[i], елемент знайдено і пошук закінчується.
Якщо а < mas[i]., то далі для пошуку обирають частину масиву, розташовану ліворуч від mas[i], у протилежному випадку — частину масиву, що розташована праворуч від mas[i]. Для обраної частини процес повторюють.
Завдання з підручника Руденко Інформатика 9 клас 2022, для поглибленого вивчення с. 127
Завдання 1. Розробіть код визначення, на якій позиції знаходиться рядок, введений з клавіатури.
# Завдання 1
a = str(input('Введіть рядок для пошуку '))
m = ['u', 'k', 'r', 'a', 'i', 'n', 'e']
n = len(m)
p = 'Такого рядка немає'
for i in range(n):
if a == m[i]:
p = 'Число на позиції', i
break
print(p)
Завдання 2. Розробіть код обчислення кількості чисел, які дорівнюють 5, у масиві: 44, 5, 2, 45, 5, 3, 5, 3, 33.
# Завдання 2
a = 5
m = [44, 5, 2, 45, 5, 3, 5, 3, 33]
n = len(m)
k = 0
for i in range(n):
if a == m[i]:
k = k+1
print(k)
Завдання 3. Дано масив рядків: 'байт', 'файл', 'алгоритм', 'монітор', 'клавіатура'. Розробіть алгоритм і код визначення максимального і мінімального значень.
# Завдання 3
m = ['байт', 'файл', 'алгоритм', 'монітор', 'клавіатура']
n = len(m)
a = []
for i in range(n):
k = len(m[i])
a.append(k)
print(a)
max = a[0]
for i in range(n-1):
if a[i+1] >= max:
max = a[i+1]
print('max=',max)
min = a[0]
for i in range(n-1):
if a[i+1] <= min:
min = a[i+1]
print('min=', min)
Завдання 4. Розробіть алгоритм і код створення масиву з дев’яти випадкових чисел у діапазоні від 41 до 66, обчислення їх суми і середнього значення.
# Завдання 4
import random
n = 9
m = []
for i in range(n):
a = random.randint(41, 61)
m.append(a)
print(m)
s = 0
for i in range(n):
s = s + m[i]
average =s/9
print('s = ', s)
print('average = ', average)
Завдання 5. Розробіть алгоритм і код визначення, чи є серед п’яти найбільших за довжиною річок України річка Прип’ять.
П'ять найбільших річок:
Дунай - 2850 км, Дніпро 2201 км, Дністер - 1362 км, Десна - 1130 км, Сіверський Донець - 1053 км.
# Завдання 5
a = 'Припять'
m = ['Дунай', 'Дніпро', 'Дністер', 'Десна', 'Сіверський Донець']
n = len(m)
k = False
for i in range(n):
if a == m[i]:
k = True
if k == True:
print('Така річка є')
else:
print('Такої річки немає')
Завдання 6. Розробіть алгоритм і код визначення назв районів області України, в якій ви мешкаєте, з найбільшою і найменшою кількістю населення.
Райони Київської області та кількість населення станом на 01.01.2020:
Білоцерківський - 439877, Бориспільський - 203653, Броварський - 242064, Бучанський - 352254, Вишгородський - 131080, Обухівський - 229518, Фастівський - 182578.
# Завдання 6
mas1 = ['Білоцерківський', 'Бориспільський', 'Броварський', 'Бучанський', 'Вишгородський', 'Обухівський', 'Фастівський']
mas2 = [439877, 203653, 242064, 352254, 131080, 229518, 182578]
n = len(mas2)
k = 0
max = mas2[0]
for i in range(n-1):
if mas2[i+1] > max:
max = mas2[i]
k = i
print('Найбільша кількість населення у ', mas1[k], 'районі')
min = mas2[0]
for i in range(n-1):
if mas2[i+1] < min:
min = mas2[i]
k = i
print('Найменша кількість населення у ', mas1[k], 'районі')
Упорядкування елементів масиву
Упорядкування - це перестановка елементів за зростанням або за спаданням. Важливо, щоб це був швидкий спосіб, простота реалізації та невеликий об'єм пам'яті для здійснення упорядкування. Є кілька методів для упорядкування: метод вибору, метод бульбашки, метод вставки.
Метод вибору: Знаходять елемент з максимальним значенням і міняють його місцями з правим крайнім елементом.
Нехай дано масив: m = [12, 18, 5, 6, 10, 11, 2, 0]. Впорядкувати його за зростанням значень елементів.
# розв'язування
m = [12, 18, 5, 6, 10, 11, 2, 0]
n = len(m)
p = n - 1
while p > 0:
a = 1
for i in range(p):
if m[i] > m[a]:
a = i
x = m[a] ; m[a] = m[p]; m[p] = x
p = p -1
print('Упорядкований масив: ')
for i in range(n):
print(m[i], end = ' ')
Результат:
Упорядкований масив:
0 11 2 5 6 10 12 18
Метод обміну(метод бульбашки): Масив переглядається зліва направо, спочатку порівнюються нульовий елемент і перший, потім перший і другий, другий і третій, і т.д. до елементів n-2 і n-1, щоразу коли попередній елемент більший за наступний, вони міняються місцями. Після цього n-1 елемент виключається з пошуку і переглядається масив від 0 елемента до n-2. Аналогічно, на позицію n-2 буде переміщено другий за величиною елемент, і т.д.
Упорядкування завершується у двох випадках:
Поточне значення правої межі досягне нуля, після перегляду масиву не буде жодних переміщень.
Нехай дано масив: m = [12, 18, 5, 6, 10, 11, 2, 0, 9, 20]. Впорядкувати його за зростанням значень елементів.
Нехай: p - права межа масиву, y - наявність переміщення (на початку кожного циклу її значення True, якщо після закінчення циклу значення True, то при останньому перегляді переміщень не було, якшо False, то було принаймні 1 переміщення), x - тимчасове зберігання елемента.
# розв'язування
m = [12, 18, 5, 6, 10, 11, 2, 0, 9, 20]
p = 9
while p > 0:
y = True
for i in range(p):
if m[i] > m[i+1]:
x = m[i]; m[i] = m[i+1]; m[i+1] = x
y = False
if y:
break
p = p - 1
print()
print('Упорядкований масив: ')
for i in range(10):
print(m[i], end = ' ')
Результат:
Упорядкований масив:
0 2 5 6 9 10 11 12 18 20
Метод вставки: Порівнюємо 0 і 1 елементи, якщо 0 більший, то вони міняються місцями, інакше вони лишаються. Далі беремо 2 елемент, якщо він менший за два попередніх, то вставляється так, щоб зліва був менший елемент, а сусідній правий не менше нього. Якщо значення є більшим за розглянуті, то переміщень не виконується. Далі вибирається елемент праворуч від розглянутих і виконуються аналогічні дії.
Нехай дано масив: m = [12, 18, 5, 6, 10, 11, 2, 0, 9, 20]. Впорядкувати його за зростанням значень елементів.
# розв'язування
m = [12, 18, 5, 6, 10, 11, 2, 0, 9, 20]
n = len(m)
for i in range(1, n):
a = m[i]
j = i-1
while j >= 0 and a < m[j]:
m[j+1] = m[j]
j -=1
m[j+1] = a
print('Упорядкований масив: ')
for i in range(n):
print(m[i], end = ' ')
Результат:
Упорядкований масив:
0 2 5 6 9 10 11 12 18 20
Завдання з підручника Руденко Інформатика 9 клас 2022, с. 134.
Завдання 1. Дано масив чисел: 54, 23, 18, 5, 21, 16. Впорядкуйте за допомогою методу обміну за зростанням чисел.
# розв'язування
m = [54, 23, 18, 5, 21, 16]
p = 5
while p > 0:
y = True
for i in range(p):
if m[i] > m[i+1]:
x = m[i]; m[i] = m[i+1]; m[i+1] = x
y = False
if y:
break
p = p - 1
print()
print('Упорядкований масив: ')
for i in range(6):
print(m[i], end = ' ')
Завдання 2. Дано масив рядків: 'системний блок', 'принтер', 'материнська плата', 'вінчестер', 'клавіатура'. Упорядкуйте масив в алфавітному порядку за допомогою методу вибору.
# розв'язування
m = ['системний блок', 'принтер', 'материнська плата', 'вінчестер', 'клавіатура']
n = len(m)
p = n - 1
while p > 0:
a = 1
for i in range(p):
if m[i] > m[a]:
a = i
x = m[a] ; m[a] = m[p]; m[p] = x
p = p -1
print('Упорядкований масив: ')
for i in range(n):
print(m[i], end = ' ')
Завдання 3. Розробіть алгоритм і код створення масиву з дев’яти випадкових чисел у діапазоні від 7 до 19. Упорядкуйте його за допомогою методу обміну.
# розв'язування
import random
m = []
print('Неупорядкований масив:')
for i in range(9):
a = random.randint(7, 19)
m.append(a)
print(a, end = ' ')
p = 8
while p > 0:
y = True
for i in range(p):
if m[i] > m[i+1]:
x = m[i]; m[i] = m[i+1]; m[i+1] = x
y = False
if y:
break
p = p - 1
print()
print('Упорядкований масив: ')
for i in range(9):
print(m[i], end = ' ')
Завдання 4. Розробіть алгоритм і код створення масиву, елементами якого є відстані від Києва до Одеси, Львова, Дніпра, Тернополя, Миколаєва і Івано-Франківська. Упорядкуйте масив за зменшенням відстані.
Київ - Одеса - 475 км
Київ - Львів - 541 км
Київ - Дніпро - 485 км
Київ - Тернопіль - 420 км
Київ - Миколаїв - 322 км
Київ - Івано-Франківськ - 551
m = [475, 541, 485, 420, 322, 551]
# розв'язування методом вибору
m = [475, 541, 485, 420, 322, 551]n = len(m)
p = n - 1
while p > 0:
a = 1
for i in range(p):
if m[i] < m[a]:
a = i
x = m[a] ; m[a] = m[p]; m[p] = x
p = p -1
print('Упорядкований масив: ')
for i in range(n):
print(m[i], end = ' ')
Завдання 5. Розробіть алгоритм і код створення масиву, елементами якого є кількість населення в Рівненській, Черкаській, Закарпатській, Херсонській, Хмельницькій і Чернігівській областях. Упорядкуйте масив методом обміну в порядку зменшення кількості населення. # розв'язування
m = [1153000, 1192000, 1254000, 1028000, 1255000, 991294]
p = 5
while p > 0:
y = True
for i in range(p):
if m[i] > m[i+1]:
x = m[i]; m[i] = m[i+1]; m[i+1] = x
y = False
if y:
break
p = p - 1
print()
print('Упорядкований масив: ')
for i in range(6):
print(m[i], end = ' ')
Завдання 6. Розробіть алгоритм і код створення масиву, елементами якого є назви семи найбільших озер України. Упорядкуйте масив методом вибору за назвами озер в алфавітному порядку.
# розв'язування методом вибору
m = ['Сасик', 'Молочне', 'Ялуг', 'Кагул', 'Кугурлуй', 'Сасик-Сиваш', 'Шагани']n = len(m)
p = n - 1
while p > 0:
a = 1
for i in range(p):
if m[i] > m[a]:
a = i
x = m[a] ; m[a] = m[p]; m[p] = x
p = p -1
print('Упорядкований масив: ')
for i in range(n):
print(m[i], end = ' ')
Коментарі
Дописати коментар