Глава 10 з 27

Безкоштовно

3: Будуємо перші програми

⏱️ 50-65 хвилин
📊 intermediate

Розділ 10: "Масиви та списки: колекції скарбів"

На вихідних Професор Біт запропонував Алісі допомогти розібрати свою колекцію марок. Вони розклали на столі кілька альбомів з марками різних країн і тематик.

— Знаєш, Алісо, — почав Професор, перегортаючи сторінки альбому, — колекції в реальному житті дуже схожі на те, що в програмуванні називається масивами та списками.

— А що таке масиви та списки? — запитала Аліса, розглядаючи барвисту марку з зображенням космічного корабля.

— Уяви, що у тебе є багато пов'язаних між собою предметів, які ти хочеш зберігати разом, — пояснив Професор. — Наприклад, всі ці марки в альбомі. У програмуванні ми можемо створити список, який міститиме багато елементів, і працювати з ними як з єдиним цілим.

Байт вивів на свій екран приклад:

python
марки = ["космос", "тварини", "спорт", "мистецтво", "транспорт"]

— Це список з п'яти рядків, — пояснив Професор. — Кожен рядок — це окремий елемент списку, а разом вони утворюють колекцію.

Колекція марок: список і індекси від 0 до 4

— Так просто? — здивувалась Аліса.

— Так, створити список дуже просто, — кивнув Професор. — А ось працювати з ним можна по-різному. Наприклад, ми можемо дізнатися, скільки елементів у списку:

python
кількість_марок = len(марки) # результат: 5

— Можемо звернутися до конкретного елемента за його позицією (індексом):

python
перша_марка = марки[0] # результат: "космос"
друга_марка = марки[1] # результат: "тварини"

— Зачекай, — насупилась Аліса, — чому перший елемент має індекс 0, а не 1?

— Добре питання! — посміхнувся Професор. — У більшості мов програмування індексація починається з нуля. Це пов'язано з тим, як комп'ютер зберігає дані в пам'яті. Тож перший елемент має індекс 0, другий — індекс 1, і так далі.

Массив — это длинный сверкающий поезд,
Где выстроен в линию каждый вагон.
С нуля начинает отсчёт эта повесть,
И строго по правилам движется он.

Ты можешь достать из шестого посылку,
А можешь вагон прицепить в самый хвост.
Массивы и списки — не просто копилка,
А к собранным данным проложенный мост!

Масив — поїзд: вагони з індексами 0, 1, 2, 3 і елементами в кожному

Логік, яка розкладала марки за категоріями, додала:
— Списки в програмуванні дуже гнучкі. Ми можемо додавати нові елементи, видаляти існуючі, змінювати їх, сортувати і так далі.

Професор показав нові приклади:

python

Додавання нового елемента в кінець списку


марки.append("архітектура")
print(марки) # ["космос", "тварини", "спорт", "мистецтво", "транспорт", "архітектура"]

Видалення елемента


марки.remove("спорт")
print(марки) # ["космос", "тварини", "мистецтво", "транспорт", "архітектура"]

Зміна елемента


марки[1] = "дика природа"
print(марки) # ["космос", "дика природа", "мистецтво", "транспорт", "архітектура"]

Сортування списку за абеткою


марки.sort()
print(марки) # ["архітектура", "дика природа", "мистецтво", "космос", "транспорт"]

— А що, якщо я хочу перевірити, чи є певна марка в моїй колекції? — запитала Аліса.

— Для цього можна використати оператор in, — пояснив Професор:

python
if "космос" in марки:
print("У тебе є марки на тему космосу!")
else:
print("У тебе немає марок на тему космосу.")

Байт показав на своєму екрані новий приклад:

python

Перебір всіх елементів списку


for тема in марки:
print("У тебе є марки на тему:", тема)

— За допомогою циклу for ми можемо виконати якусь дію для кожного елемента списку, — пояснив Професор. — Це дуже зручно, коли потрібно обробити всі елементи колекції.

— А можна створювати списки з різними типами даних? — зацікавилась Аліса.

— Звичайно! — кивнув Професор. — В один список можна помістити числа, рядки, булеві значення і навіть інші списки.

python
різне = [42, "привіт", True, [1, 2, 3]]

— Вкладені списки особливо корисні для представлення табличних даних або багатовимірних структур, — додав Професор. — Наприклад, ми можемо представити ігрове поле для хрестиків-нуликів:

python
поле = [
[" ", " ", " "],
[" ", "X", " "],
[" ", " ", "O"]
]

— У цьому прикладі у нас список з трьох списків, кожен з яких представляє один ряд ігрового поля, — пояснив він. — Щоб звернутися до конкретної клітинки, потрібно вказати два індекси:

python
центральна_клітинка = поле[1][1] # результат: "X"

— А є ще якісь типи колекцій, крім списків? — запитала Аліса.

— Так, у різних мовах програмування є різні типи колекцій, — відповів Професор. — Наприклад, у Python є:

1. Списки (list) — впорядковані колекції, які ми вже обговорили
2. Кортежі (tuple) — схожі на списки, але їх не можна змінювати після створення
3. Словники (dict) — колекції пар "ключ-значення", як справжні словники
4. Множини (set) — невпорядковані колекції унікальних елементів

— Давай розглянемо словники детальніше, — запропонував Професор. — Вони дуже корисні, коли потрібно пов'язати одні дані з іншими.

python

Словник, що пов'язує країни з їх столицями


столиці = {
"Росія": "Москва",
"Франція": "Париж",
"Японія": "Токіо"
}

Отримання значення за ключем


столиця_франції = столиці["Франція"] # результат: "Париж"

Додавання нової пари ключ-значення


столиці["Італія"] = "Рим"

Перебір всіх пар у словнику


for країна, столиця in столиці.items():
print("Столиця", країни, "—", столиця)

— У словнику ми звертаємося до елементів не за індексом, а за ключем, — пояснив Професор. — Це робить код більш зрозумілим і менш схильним до помилок.

— А множини? — запитала Аліса. — Для чого вони потрібні?

— Множини корисні, коли нам важлива тільки наявність або відсутність елемента, а порядок не має значення, — відповіла Логік. — Крім того, множини автоматично видаляють дублікати.

python

Створення множини


кольори = {"червоний", "синій", "зелений", "синій"}
print(кольори) # результат: {"червоний", "синій", "зелений"} - дублікат "синій" видалено

Перевірка наявності елемента


if "жовтий" in кольори:
print("Жовтий колір є у множині")
else:
print("Жовтого кольору немає у множині")

Операції з множинами


кольори2 = {"жовтий", "синій", "помаранчевий"}
спільні_кольори = кольори & кольори2 # перетин: {"синій"}
всі_кольори = кольори | кольори2 # об'єднання: {"червоний", "синій", "зелений", "жовтий", "помаранчевий"}

— У програмуванні колекції використовуються постійно, — підсумував Професор. — Вони дозволяють працювати з групами даних, що критично важливо для більшості програм.

— Це як у реальному житті, — помітила Аліса, закриваючи альбом з марками. — Ми постійно маємо справу з колекціями: набір олівців, книги на полиці, продукти в холодильнику.

— Саме так! — посміхнувся Професор. — Програмування часто відображає структури та процеси з реального світу, роблячи їх більш організованими та ефективними.

Завдання

Уяви, що ти створюєш програму для обліку своєї колекції (книг, іграшок, наклейок — чого завгодно). Напиши приклад списку або словника для зберігання інформації про свою колекцію. Потім напиши кілька рядків коду, що демонструють, як можна працювати з цією колекцією (додавання нових елементів, пошук, сортування тощо).