📝 Python

Списки и словари в Python

P
Автор
PyLand Team
📅
Опубликовано
30.03.2026
⏱️
Время чтения
3 мин
👁️
Просмотров
387
🌱
Уровень
Начальный

Проблема: Хочешь хранить 100 студентов → 100 переменных? Решение: коллекции.


Списки (Lists)

Список — упорядоченная последовательность элементов под одним именем.

Создание списков

empty_list = []
numbers = [1, 2, 3, 4, 5]
fruits = ["яблоко", "банан", "апельсин"]
mixed = ["текст", 42, True, 3.14]

Доступ по индексу

Индексы начинаются с 0!

fruits = ["яблоко", "банан", "апельсин"]
#          0          1          2

print(fruits[0])   # яблоко
print(fruits[-1])  # апельсин (последний)
print(fruits[-2])  # банан (предпоследний)

fruits[1] = "груша"  # изменение
print(len(fruits))   # 3

Срезы (Slicing)

Синтаксис: список[start:end:step]

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[2:5])   # [2, 3, 4]
print(numbers[:5])    # [0, 1, 2, 3, 4]
print(numbers[5:])    # [5, 6, 7, 8, 9]
print(numbers[::2])   # [0, 2, 4, 6, 8]
print(numbers[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(numbers[-3:])   # [7, 8, 9]

Срезы создают новый список, оригинал не меняется.


Методы списков

fruits = ["яблоко", "банан"]

fruits.append("апельсин")     # добавить в конец
fruits.insert(1, "груша")     # вставить на позицию
fruits.remove("банан")        # удалить по значению (первое вхождение)
last = fruits.pop()           # удалить и вернуть последний
first = fruits.pop(0)         # удалить и вернуть по индексу
fruits.clear()                # очистить весь список

numbers = [3, 1, 4, 1, 5, 9, 2]
numbers.sort()                # сортировать на месте → [1, 1, 2, 3, 4, 5, 9]
numbers.sort(reverse=True)    # обратная сортировка
numbers.reverse()             # перевернуть

print(numbers.count(1))       # 2 — количество вхождений
print(numbers.index(4))       # индекс элемента

list1 = [1, 2, 3]
list1.extend([4, 5, 6])       # добавить элементы из другого списка

Проверка наличия

if "банан" in fruits:
    print("Есть!")

if "груша" not in fruits:
    print("Нет груши")

Словари (Dictionaries)

Словарь — коллекция пар «ключ: значение». Доступ по ключу, а не по индексу.

Создание словарей

empty_dict = {}

student = {
    "name": "Анна",
    "age": 16,
    "city": "Москва",
    "grade": 10
}

# Ключи могут быть строками или числами
scores = {1: 100, 2: 85, 3: 92}

Доступ, изменение, добавление, удаление

print(student["name"])  # Анна
print(student["age"])   # 16

student["age"] = 17               # изменить
student["email"] = "a@mail.com"   # добавить новый ключ

del student["email"]              # удалить ключ
age = student.pop("age")          # удалить и получить значение

Методы словарей

student = {"name": "Анна", "age": 16, "city": "Москва"}

# get() — безопасное получение (без KeyError)
email = student.get("email", "No email")  # "No email"
age = student.get("age", 0)               # 16

# keys(), values(), items()
print(list(student.keys()))    # ['name', 'age', 'city']
print(list(student.values()))  # ['Анна', 16, 'Москва']

# update() — обновить несколько ключей сразу
student.update({"age": 17, "grade": 11})

# Проверка наличия ключа
if "name" in student:
    print("Имя есть!")

student.clear()  # очистить словарь

Итерация

По списку

fruits = ["яблоко", "банан", "апельсин"]

for fruit in fruits:
    print(fruit)

# С индексом (enumerate):
for i, fruit in enumerate(fruits, 1):
    print(f"{i}. {fruit}")
# 1. яблоко
# 2. банан
# 3. апельсин

По словарю

student = {"name": "Анна", "age": 16, "city": "Москва"}

for key in student:           # только ключи
    print(key)

for value in student.values():  # только значения
    print(value)

for key, value in student.items():  # ключи и значения
    print(f"{key}: {value}")

Практический пример: TODO список

tasks = []

# Добавление задач
tasks.append("Учёба")
tasks.append("Спорт")
tasks.append("Чтение")

# Показ
print("Мои задачи:")
for i, task in enumerate(tasks, 1):
    print(f"{i}. {task}")

# Удаление
tasks.remove("Спорт")
print(f"Осталось: {len(tasks)} задач")

# Проверка
if "Учёба" in tasks:
    print("Учёба ещё не выполнена!")

Частые ошибки

1. IndexError — выход за границы:

fruits = ["яблоко", "банан"]
print(fruits[5])  # ❌ IndexError!
# Проверяй длину: if len(fruits) > 5: ...

2. KeyError — ключ не найден:

student = {"name": "Анна"}
print(student["age"])  # ❌ KeyError!
# Используй get(): student.get("age", 0)

3. Копирование списков:

# ❌ Это ссылка, не копия:
list2 = list1
list2[0] = 999
print(list1)  # [999, ...] — изменился!

# ✅ Настоящая копия:
list2 = list1.copy()  # или list1[:]

Связанные темы

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Словари в Python: хранение данных парами 📖

Представь, что ты создаешь карточку персонажа в игре. У него есть имя, атака, здоровье, класс....

📅 30.03.2026 👁️ 391
📝

Что такое ORM

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

📅 30.06.2026 👁️ 363
📝

JSON: Сохранение данных

Цель: Научиться сохранять и загружать данные в формате JSON.

📅 03.04.2026 👁️ 468