Python
List в Python: полный разбор для начинающих
List в Python — это список значений в определенном порядке. В нем можно хранить строки, числа, словари, другие списки и любые объекты. Списки используют для задач, товаров, ссылок, результатов поиска, оценок, сообщений и временных данных перед сохранением
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Создание списка и индексы
tasks = ["создать файл", "написать код", "проверить результат"]
print(tasks[0])
print(tasks[-1])
print(len(tasks))
Индекс 0 означает первый элемент, -1 — последний. len() показывает длину списка
Добавление элементов
tasks = []
tasks.append("создать файл")
tasks.extend(["написать код", "проверить результат"])
tasks.insert(0, "подготовить папку")
print(tasks)
append добавляет один элемент, extend добавляет несколько, insert вставляет в выбранное место
Обход списка
tasks = ["создать файл", "написать код", "проверить результат"]
for number, task in enumerate(tasks, start=1):
print(f"{number}. {task}")
enumerate удобен, когда пользователю нужен номер, а вам не хочется вести счетчик вручную
Срезы
items = ["a", "b", "c", "d"]
print(items[:2])
print(items[1:3])
print(items[::-1])
Срезы помогают взять часть списка или развернуть порядок для просмотра
Список словарей
users = [
{"name": "Анна", "active": True},
{"name": "Илья", "active": False},
]
active_users = [user for user in users if user["active"]]
print(active_users)
Такой формат встречается в данных из API, таблиц и небольших приложений
Как проверять себя
Проверьте обычный список, пустой список, список из одного элемента и данные с повтором. Если в задаче есть индекс, отдельно проверьте слишком короткий список. Если есть изменение на месте, выведите исходные данные до и после операции
Операции со списком в одном примере
tasks = ["написать код", "проверить", "опубликовать"]
tasks.append("собрать обратную связь")
tasks[1] = "проверить результат"
done = tasks.pop(0)
print("готово:", done)
print("осталось:", tasks)
В этом примере видно три важных действия: добавление, замена и удаление. После каждого изменения полезно выводить список, чтобы понимать, меняется исходный объект или создается новый
Список словарей: фильтрация и обновление
users = [
{"name": "Анна", "active": True},
{"name": "Илья", "active": False},
]
active_names = [user["name"] for user in users if user["active"]]
print(active_names)
Такой формат часто встречается после чтения JSON, CSV или ответа API. Список хранит порядок записей, а словарь внутри описывает одну запись
Частые ошибки
Путать номер элемента и индекс
Первый элемент имеет индекс 0, второй — индекс 1, третий — индекс 2
Менять список там, где нужен новый результат
Если исходные данные еще пригодятся, используйте новый список или sorted(), а не изменение на месте
Не проверять пустые данные
Пустой список часто ломает pop, choice, обращение по индексу и вычисление среднего значения
Мини-проект: список задач
tasks = []
tasks.append({"title": "написать код", "status": "draft"})
tasks.append({"title": "проверить результат", "status": "todo"})
for number, task in enumerate(tasks, start=1):
print(number, task["title"], task["status"])
Здесь список хранит порядок задач, а словарь внутри хранит поля одной задачи. Такое сочетание часто встречается в маленьких приложениях, парсерах и обработке таблиц
Что обязательно проверить
Проверьте пустой список, первый элемент, последний элемент, добавление нового элемента, изменение статуса и обход через enumerate. Если эти действия понятны, база list уже не выглядит абстрактной
Живой пример: очередь задач
tasks = ["написать текст", "проверить форму", "опубликовать"]
current = tasks.pop(0)
tasks.append("проверить аналитику")
print("сейчас:", current)
print("осталось:", tasks)
Такой пример показывает сразу несколько вещей: список хранит порядок, pop(0) забирает первый элемент, append добавляет новую задачу в конец. Если очередь пустая, pop(0) вызовет ошибку, поэтому в реальном коде перед ним нужна проверка if tasks