v1.0.0

Python с нуля для ЕГЭ · Списки: храним и изменяем последовательность

Урок курсаPython 35 задачБесплатно

Списки: храним и изменяем последовательность

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

Теория

Список хранит изменяемую последовательность

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

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

scores = [3, 5, 4]scores[0] = 4scores.append(5)print(scores)

Как меняется один объект

Команды выполняются последовательно над одним списком. После замены по индексу остальные позиции не сдвигаются. После append длина увеличивается на один, а новый элемент получает последний индекс.

Для трассировки переписывайте весь список после каждой изменяющей команды. Так видно не только новое значение, но и его позицию.

Разберём на примере
Проследим список оценок
Начальный список равен [3, 5, 4].
  1. После замены нулевого элемента получается [4, 5, 4].
  2. append добавляет 5 в конец: [4, 5, 4, 5].
  3. Длина итогового списка равна четырём.
Проверьте себя
Почему после append не нужно присваивать результат метода обратно списку?
append изменяет исходный список и возвращает None. Повторное присваивание заменило бы переменную этим значением.

Удаление выбирают по известным данным

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

tasks = ["письмо", "прогулка", "задачи"]finished = tasks.pop(0)tasks.remove("прогулка")print(finished)print(tasks)

В будущем у дела появится постоянный номер. Тогда сначала найдём нужную запись циклом, а затем удалим именно найденный объект — позиции соседей могут меняться.

Изменяющий метод не возвращает список

Метод append изменяет список на месте и возвращает None. Поэтому присваивание values = values.append(3) теряет ссылку на список и записывает в values значение None.

Как проверять обработку списка

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

Как действовать
Работаем с набором по шагам
  1. Запишите начальный список. Сохраните порядок и индексы элементов.
  2. Выполните изменения. После каждой команды перепишите состояние.
  3. Проследите перебор. Каждый элемент должен учитываться ровно один раз.
  4. Проверьте итог. Сравните длину, порядок и вычисленный результат.

Практика

Прочитайте элемент списка

Чему равно выражение [4, 7, 9][1]?

Подсказка
Первый элемент имеет индекс 0.
Решение

По индексу 1 находится второй элемент списка — 7.

Проследите изменение списка

После values = [1, 2, 3] выполняется values[0] = 5. Запишите элементы списка через пробел.

Подсказка
Присваивание заменяет только элемент с индексом 0.
Решение

Первый элемент меняется с 1 на 5, остальные остаются прежними: 5 2 3.

После values = [1, 2] и values.append(3) чему равна длина списка?

Подсказка
`append` добавляет один элемент в конец.
Решение

Список становится `[1, 2, 3]`, поэтому его длина равна 3.

Проследите сумму

Цикл складывает все элементы списка [2, 4, 6]. Чему равен итог?

Подсказка
Каждый элемент прибавляется ровно один раз.
Решение

Накопитель проходит значения 0 → 2 → 6 → 12.

Удалите выполненное дело

Запустите tasks = ["письмо", "прогулка", "задачи"]; finished = tasks.pop(1); print(finished, len(tasks)). Какую строку выведет программа?

Подсказка
`pop(1)` возвращает второй элемент и удаляет его из списка.
Решение

Метод возвращает строку `прогулка`; после удаления в списке остаются два элемента.

Итог

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

Составьте список из четырёх чисел, замените одно значение, добавьте ещё одно и заранее вычислите итоговую длину и сумму.

Прогресс

0 / 5
x

Вы ещё не решали задания