Объяснение к уроку
После этого урока ты сможешь:
append() или несколько элементов с помощью extend().remove().pop(), используя его по умолчанию или с указанным индексом.Списки изменяемы, поэтому ты можешь менять их длину без пересоздания списка с нуля. Самое важное различие — один элемент против нескольких: append(value) добавляет один объект, тогда как extend(iterable) добавляет каждое значение из итерируемого объекта.
Используй insert(index, value), когда новый элемент должен находиться перед существующей позицией. Это отличается от items[index] = value, которое заменяет элемент на этой позиции.
Для удаления remove(value) ищет совпавшее значение и удаляет его первое вхождение; если значение отсутствует, возникает ошибка ValueError. pop() удаляет и возвращает последний элемент; pop(index) удаляет и возвращает элемент на определенной позиции, вызывая IndexError, если этот индекс недопустим. Обе операции изменяют исходный список.
Ты можешь использовать эти операции внутри циклов и условий для ведения очереди, чек-листа или коллекции имен задач. Избегай вызова изменяющих методов прямо в операторе возврата: такие методы, как append(), extend(), insert() и remove(), возвращают None.
append() добавляет один элемент. extend() берет элементы из другого итерируемого объекта по одному.
services = ["api"]
services.append("worker")
services.extend(["database", "cache"])
print(services)Вывод:
['api', 'worker', 'database', 'cache']Добавление всего второго списка целиком вместо этого создало бы вложенный список.
insert(index, value) сдвигает существующие элементы вправо.
stages = ["build", "deploy"]
stages.insert(1, "test")
print(stages)Вывод:
['build', 'test', 'deploy']Прежний второй элемент по-прежнему присутствует.
Когда значение встречается дважды, remove() удаляет только первую копию.
flags = ["ready", "retry", "ready"]
flags.remove("ready")
print(flags)Вывод:
['retry', 'ready']Значение, которого нет в списке, вызовет ValueError.
Без индекса pop() удаляет последний элемент; с индексом — удаляет элемент на этой позиции.
workers = ["api", "queue", "mailer"]
last_worker = workers.pop()
first_worker = workers.pop(0)
print(last_worker)
print(first_worker)
print(workers)Вывод:
mailer
api
['queue']Оба вызова изменяют исходный список, возвращая при этом удаленное значение.
| Потребность | Метод |
|---|---|
| Добавить один элемент в конец | items.append(value) |
| Добавить все элементы из другого итерируемого объекта | items.extend(values) |
| Вставить перед индексом | items.insert(index, value) |
| Удалить первое равное значение | items.remove(value) |
| Удалить последний элемент и вернуть его | items.pop() |
| Удалить по индексу и вернуть значение | items.pop(index) |
items[index] = value заменяет элемент вместо его сдвига.pop(): pop() ожидает индекс, а не значение для поиска.remove() удалит все дубликаты: этот метод удаляет только первое совпавшее значение.