Перейти к содержанию

Урок 001: списки и последовательности

Цель

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

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

Список записывается в квадратных скобках:

articles = ["LO100", "LO200", "LO300"]

print(len(articles))
print(articles[0])
print(articles[2])

Ожидаемый вывод:

3
LO100
LO300

Индексация начинается с нуля. Для списка из трёх элементов допустимы индексы 0, 1, 2. Обращение к articles[3] вызывает IndexError.

Последний элемент можно получить как articles[-1]. Это удобно, но в пустом списке такой доступ тоже вызывает ошибку.

Изменение состава

articles = []

articles.append("LO100")
articles.append("LO200")
articles[1] = "LO250"

print(articles)

append добавляет один элемент в конец. Присваивание по существующему индексу заменяет значение, но не увеличивает длину.

Удаление по значению и по индексу:

articles = ["LO100", "LO200", "LO300"]

articles.remove("LO200")
removed_article = articles.pop(0)

print(removed_article)
print(articles)

remove вызывает ValueError, если значения нет. Перед удалением можно проверить принадлежность:

articles = ["LO100", "LO200", "LO300"]

if "LO200" in articles:
    articles.remove("LO200")

Обход списка

articles = ["LO100", "LO200", "LO300"]

for article in articles:
    print(article)

Если нужен порядковый номер для пользователя, примените enumerate:

articles = ["LO100", "LO200", "LO300"]

for number, article in enumerate(articles, start=1):
    print(f"{number}. {article}")

Номер для человека начинается с 1, но индекс внутри списка по-прежнему начинается с 0.

Срезы

Срез создаёт новый список из выбранного диапазона:

articles = ["A", "B", "C", "D"]

first_two = articles[:2]
middle = articles[1:3]

print(first_two)
print(middle)

Правая граница не включается. articles[1:3] содержит элементы с индексами 1 и 2.

Псевдоним и копия

original = ["LO100", "LO200"]
alias = original
copy_of_original = original.copy()

alias.append("LO300")

print(original)
print(copy_of_original)

alias и original указывают на один список, поэтому изменение видно через оба имени. copy() создаёт отдельный внешний список. Позже важно помнить: вложенные изменяемые объекты при такой копии всё ещё могут быть общими.

Нельзя менять состав во время обхода

Удаление элементов из того же списка внутри for способно пропустить значения. Безопаснее собрать новый список:

quantities = [3, 0, 5, 0]
positive_quantities = []

for quantity in quantities:
    if quantity > 0:
        positive_quantities.append(quantity)

Упражнение

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

Самопроверка

  • Почему индекс последнего элемента списка из четырёх значений равен 3?
  • Чем append отличается от замены по индексу?
  • Почему изменение через alias видно в original?
  • Как отфильтровать список без удаления во время обхода?

← Модуль 02 · Следующий урок →