append в Python: как постепенно строить список
Автор: Казачкин Даниил Михайлович · Обновлено
Метод append добавляет один объект в конец существующего списка и возвращает None. Он удобен, когда результат строится постепенно: например, в него попадают только элементы,…
Метод append добавляет один объект в конец существующего списка и возвращает None. Он удобен, когда результат строится постепенно: например, в него попадают только элементы, прошедшие условие.
Список квадратов чётных чисел
result = []
for number in range(1, 8):
if number % 2 == 0:
result.append(number ** 2)
print(result)Ожидается:
[4, 16, 36]Порядок совпадает с порядком обнаружения чисел 2, 4 и 6. Исходный диапазон не меняется.
append не является присваиванием
Ошибка result = result.append(value) заменяет переменную на None, потому что метод изменяет список на месте и ничего содержательного не возвращает. Правильный вызов стоит отдельной строкой. Для добавления элементов другого списка по одному уровню используют extend; append([3, 4]) добавит вложенный список как один элемент.
Не размещайте result = [] внутри цикла — тогда предыдущие находки будут стираться. Если список должен создаваться отдельно для каждой внешней итерации, наоборот, инициализация относится внутрь внешнего блока. Место строки определяется временем жизни результата.
Фильтр слов
Прочитайте слова одной строкой и соберите новый список только из слов длиной не меньше пяти символов, приведённых к нижнему регистру. Для «Кот Собака Python Дом» ожидаются ['собака', 'python']. Проверьте повторяющиеся слова и пустой ввод. Затем создайте второй список длин выбранных слов. Используйте временный print внутри if, чтобы подтвердить, какие элементы прошли фильтр, и удалите диагностику после проверки.
Один append — один объект
Начните с пустого списка groups и дважды добавьте в него списки участников. Сравните append(second_group) и extend(second_group): в первом случае появляется вложенный список, во втором — отдельные имена. Выведите len и тип каждого элемента. Затем исследуйте ошибку result = result.append(value) и зафиксируйте, что метод вернул None. Для практического фильтра соберите только уникальные чётные числа, используя вспомогательное множество и append для сохранения порядка первого появления. Проверьте повторы и объясните, почему одно лишь множество изменило бы контракт результата.
Практикум: построение списка по условию
Из исходных чисел постройте новый список квадратов только положительных нечётных значений. Реализуйте сначала обычным циклом с append, чтобы отдельно увидеть фильтр и преобразование. Проверьте отрицательные, ноль, повторы и пустой вход. Подтвердите, что исходный список не изменился и порядок подходящих элементов сохранился. Затем сравните со списковым включением и выберите форму, где условие легко прочитать. Не добавляйте значение до проверки, иначе придётся удалять ошибочный результат.
Контрольная точка
Какие три шага выполняет цикл: перебор, проверка и преобразование? Переставьте их мысленно и объясните, почему квадрат нужно вычислять только для прошедшего элемента.
Частые вопросы
append и extend делают одно и то же?
append добавляет один объект целиком, а extend перебирает переданную коллекцию и добавляет её элементы. Для строки различие особенно заметно: extend добавит отдельные символы.