Одновимірні масиви

Масиви в 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 = ' ')


Коментарі