Python

Списки в Python: list на примерах

Список в Python хранит несколько значений в одном порядке. Через список удобно держать задачи, числа, строки, результаты парсинга, товары, файлы и любые данные, которые нужно перебрать

Здесь разберем список как рабочий инструмент: как создать набор данных, добавить элемент, пройтись циклом, взять часть списка и не получить ошибку, когда список оказался пустым

Базовый пример

Создадим список задач, добавим элемент и пройдем по всем значениям:

tasks = ['написать код', 'проверить результат']
tasks.append('исправить ошибку')

for task in tasks:
    print(task)

append меняет исходный список. Если нужно получить новый список, используйте отдельную переменную

Разбор по шагам

У списка есть порядок и индексы. Первый элемент имеет индекс 0, последний можно взять через -1. Перед обращением к элементу полезно проверить, что список не пустой: это избавляет от IndexError в простых меню, корзинах, очередях задач и результатах парсинга

Когда вы добавляете элемент через append, меняется тот же самый список. Когда берете срез, например items[:3], получается новый список. Эта разница важна: одно действие меняет исходные данные, другое оставляет их как были

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Практические варианты

Фильтрация

tasks = ['код', 'проверка', 'релиз']
long_tasks = []

for task in tasks:
    if len(task) > 3:
        long_tasks.append(task)

print(long_tasks)

Индексы

items = ['a', 'b', 'c']
print(items[0])
print(items[-1])

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

Частые ошибки: забыть, что первый индекс равен 0; обратиться к элементу пустого списка; менять список во время перебора; путать строку и список строк

Как проверить результат

  • запустить код на обычном примере
  • проверить пустой список
  • проверить список из одного элемента
  • проверить повторы
  • объяснить, меняется исходный список или создается новый
  • вынести действие в функцию, если оно повторяется

Еще полезные операции со списком

Удалить элемент

tasks = ["код", "проверка", "релиз"]
tasks.remove("проверка")
print(tasks)

remove удаляет первое найденное значение. Если значения нет, будет ошибка, поэтому перед удалением можно проверить наличие

if "проверка" in tasks:
    tasks.remove("проверка")

Получить часть списка

numbers = [10, 20, 30, 40, 50]
print(numbers[:3])
print(numbers[-2:])

Срез создает новый список. Это удобно, когда нужно взять первые элементы, последние элементы или копию

Мини-практика

Сделайте список покупок: добавьте три товара, удалите один, выведите количество товаров и покажите первый товар. Потом проверьте пустой список, чтобы не получить IndexError

items = []

if items:
    print(items[0])
else:
    print("Список пуст")

Такой код выглядит простым, но именно он защищает программу от падения на реальных данных

Практика на закрепление

Соберите маленький сценарий: есть список задач, нужно добавить новую, отметить выполненную и вывести оставшиеся. Даже без классов и базы данных такой пример похож на реальную работу с данными

tasks = ["написать код", "проверить", "отправить"]
done = []

done.append(tasks.pop(0))

print("Готово:", done)
print("Осталось:", tasks)

Теперь измените сценарий: если список задач пустой, не вызывайте pop, а покажите сообщение. Это простая проверка, но она защищает код от IndexError

if tasks:
    done.append(tasks.pop(0))
else:
    print("Новых задач нет")

После этого добавьте фильтр: показать только задачи длиннее 7 символов. Так вы повторите создание списка, изменение, проверку пустого значения, перебор и фильтрацию. Этого достаточно, чтобы тема list перестала быть абстрактной

Практика: трекер задач на списках

Соберите маленький трекер без классов и базы данных. В нем есть список активных задач и список завершенных. Нужно добавить новую задачу, перенести первую активную в завершенные и показать оба списка

def add_task(tasks, title):
    if title:
        tasks.append(title)
    return tasks

def finish_first(tasks, done):
    if not tasks:
        return tasks, done

    done.append(tasks.pop(0))
    return tasks, done

tasks = ["написать код", "проверить", "отправить"]
done = []

add_task(tasks, "исправить замечания")
tasks, done = finish_first(tasks, done)

print("Активные:", tasks)
print("Готово:", done)

Проверьте два случая: пустой список задач и попытку добавить пустую строку. Если код не падает и результат можно объяснить, базовая работа со списком закреплена

Где списки чаще всего нужны

Список появляется почти в любой маленькой программе, где данных больше одного элемента. Это может быть очередь задач, корзина товаров, набор строк из файла, результаты поиска или список ошибок после проверки формы. Главное — не воспринимать list как абстрактную тему из учебника. Это контейнер, через который программа помнит несколько значений и обрабатывает их одним правилом

Хорошая привычка для новичка: каждый раз задавать три вопроса. Может ли список быть пустым? Важен ли порядок элементов? Нужно ли менять исходный список или лучше вернуть новый? Ответы на эти вопросы часто сразу подсказывают, использовать ли append, pop, срез, фильтрацию или генератор списка

Проверка на пустой список и повтор

Для списков самые частые ошибки появляются не на красивом примере из трех элементов, а на пустом списке и повторах. Проверьте оба случая отдельно

def has_item(items, title):
    return title in items

print(has_item([], "молоко"))
print(has_item(["молоко", "молоко"], "молоко"))

Если функция должна возвращать количество, используйте count. Если нужно просто понять, есть ли элемент, достаточно in. Это разные задачи, и от выбора зависит дальнейший код

Итоговая практика: список покупок

Соберите функцию, которая добавляет товар только один раз и возвращает обновленный список. Это проверяет сразу три базовых действия: поиск в списке, добавление и возврат результата

def add_unique_item(items, title):
    if not title:
        return items
    if title in items:
        return items

    items.append(title)
    return items

shopping = ["хлеб", "молоко"]

print(add_unique_item(shopping, "сыр"))
print(add_unique_item(shopping, "хлеб"))
print(add_unique_item([], "яблоки"))

После запуска объясните, почему повторный товар не добавился и почему пустой список тоже работает. Если это понятно, вы уже умеете использовать list не только в учебном примере, но и в маленьком реальном сценарии

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x