Списки та Кортежі

Уявіть, що ви розробляєте онлайн-магазин. Вам потрібно зберігати не один товар, а тисячі. Створювати для кожного окрему змінну (`item1`, `item2`...) — неможливо. Саме тут на допомогу приходять колекції. У цьому розділі ми вивчимо два головні інструменти Python для роботи з групами об'єктів.

1 Природа списків (Lists)

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

Важливо: Списки у Python є гетерогенними. Це означає, що в одному списку можуть одночасно знаходитися і числа, і рядки, і навіть інші списки.

main.py
# Створення списку з різними типами
mixed_list = [42, "Привіт", 3.14, True]

# Список може містити навіть функції або класи
data = [mixed_list, "Ще один рядок"]

2 Навігація: Індекси та Зрізи

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

Негативна індексація

Python дозволяє рахувати з кінця.
Індекс -1 — це останній елемент, -2 — передостанній.
Це ідеально підходить, коли ви не знаєте довжини списку, але вам потрібен останній доданий елемент.

main.py
colors = ["red", "green", "blue", "yellow"]

print(colors[0])   # red
print(colors[-1])  # yellow (останній)

# Складні зрізи [start:stop:step]
# Беремо елементи з 0 по 3 через один
print(colors[0:3:2]) # ["red", "blue"]

3 Методи: Як керувати даними

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

Додавання елементів

  • .append(val) — Додає елемент у хвіст списку.
  • .insert(index, val) — Вставляє елемент у конкретне місце, "розсуваючи" інші.
  • .extend(list) — Зливає два списки в один (аналог оператора +).

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

  • .pop(index) — "Вистрілює" елемент зі списку. Видаляє його і повертає вам значення.
  • .remove(val) — Видаляє перший об'єкт з таким значенням. Якщо значення не знайдено — виникне помилка.
  • .clear() — Повністю очищує список.

main.py
colors = ["red", "green"]

colors.append("blue")
print(colors)  # ["red", "green", "blue"]

colors.insert(1, "yellow")
print(colors)  # ["red", "yellow", "green", "blue"]

additional_colors = ["cyan", "black"]
colors.extend(additional_colors)
print(colors)  # ["red", "yellow", "green", "blue", "cyan", "black"]

4 Кортежі (Tuples): Фортеця для даних

Кортеж — це незмінний родич списку. Після створення ви не можете додати, видалити або змінити жоден його елемент.

Навіщо це потрібно?

  • Безпека: дані не будуть змінені випадково іншою частиною програми.
  • Швидкість: Python обробляє кортежі швидше, ніж списки.
  • Пам'ять: вони займають менше місця.
main.py
# Створення кортежу
coordinates = (50.4501, 30.5234)

# Спроба зміни призведе до помилки:
# coordinates[0] = 51.0 # TypeError!

# Розпакування кортежу (Unpacking)
lat, lon = coordinates
print(f"Широта: {lat}, Довгота: {lon}")

5 Списки та Цикли: Автоматизація

Сила колекцій розкривається, коли ми комбінуємо їх із циклом for. Ми можемо перевірити кожен елемент, змінити його або відфільтрувати.

filter.py
grades = [10, 5, 12, 8, 4, 11]
best_grades = []

for grade in grades:
    if grade >= 10:
        best_grades.append(grade)

print(f"Відмінні оцінки: {best_grades}")

List Comprehension

Професіонали в Python часто використовують "спискові вирази", щоб скоротити код ліворуч до одного рядка:

filter.py
best_grades = [g for g in grades if g >= 10]

6 Багатовимірні дані (Матриці)

Списки можуть містити інші списки. Це дозволяє створювати таблиці або ігрові поля (наприклад, для шахів або хрестиків-ноликів).

matrix.py
# Ігрове поле (Матриця 3х3)
board = [
    ["X", " ", "O"],
    [" ", "X", " "],
    ["O", " ", "X"]
]

# Доступ до елемента: [рядок][стовпчик]
print(board[0][2]) # Виведе: O

Золоте правило вибору

Якщо вам потрібен список справ, який ви будете доповнювати — використовуйте List.
Якщо вам потрібно зафіксувати координати міста або налаштування сервера, які не мають мінятися — обирайте Tuple.