Список
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Много значений под одним именем, у каждого — свой номер: список «класс» хранит все имена, и по номеру 5 находится пятое.
Шкафчики в раздевалке: название одно, а у каждого шкафчика свой номер.
Написать список покупок с номерами; вычеркнуть второй пункт и назвать, какие номера сдвинулись.
Упорядоченный набор значений под одним именем; к элементу обращаются по номеру — индексу. Списки обрабатывают циклом: «для каждого элемента сделай…». Длина может меняться: элементы добавляют и удаляют, при удалении номера следующих элементов сдвигаются.
Собрать в Scratch список из пяти результатов игры и циклом найти наибольший; предсказать и проверить, что вернёт обращение к элементу с номером 6.
Структура данных для последовательностей. Классический массив — непрерывный блок памяти: доступ по индексу за O(1), размер фиксирован; динамический список (list в Python) растёт по мере добавления. В большинстве языков индексация с нуля — отсюда ошибки на единицу. Краевой случай: выход за границы в Python даёт IndexError, а в C++ — неопределённое поведение: код может «работать», портя чужую память.
Найти и исправить в цикле на Python выход за границу (range(len(a) + 1)); воспроизвести тот же промах в C++ и сравнить реакции двух языков.
Частое заблуждение
«Для ста чисел нужно сто переменных». Нет: список хранит их все под одним именем, а к каждому значению обращаются по его номеру.