Списки

Проблема

Мы на Девмане часто решаем задачу: нужно сохранить список рекомендаций к работе. Мы могли бы делать это в переменных:

suggestion1 = input()
suggestion2 = input()
suggestion3 = input()
suggestion4 = input()

И чтобы вывести все рекомендации, нам понадобилось бы дублировать логику:

if suggestion1:
    print(suggestion1)
if suggestion2:
    print(suggestion2)
if suggestion3:
    print(suggestion3)
if suggestion4:
    print(suggestion4)

Мы не только дублируем код, мы заранее ограничиваем себя четырьмя рекомендациями. Иногда четырёх штук мало.

Создание и добавление

Итак, у нас есть однородные данные (рекомендации), над которыми надо производить одни и те же операции (вывод в консоль). Списки в Python используются для того, чтобы удобно хранить однородные данные.

Создадим пустой список:

suggestions = []

Добавим в него наши четыре рекомендации:

suggestion1 = input()
suggestion2 = input()
suggestion3 = input()
suggestion4 = input()

suggestions.append(suggestion1)
suggestions.append(suggestion2)
suggestions.append(suggestion3)
suggestions.append(suggestion4)

Кстати, теперь в промежуточных переменных надобности нет. Сократим код:

suggestions.append(input())
suggestions.append(input())
suggestions.append(input())
suggestions.append(input())

В коде дублируется одна и та же строка. Заменим её на цикл:

for i in range(4):
   suggestions.append(input())

Сделаем количество рекомендаций переменной:

number_of_suggestions = 4
for i in range(number_of_suggestions):
   suggestions.append(input())

Чтение

Мы можем вывести весь список suggestions командой print(suggestions). Чтобы вывести конкретную рекомендацию в suggestions, надо указать её индекс. При этом индексы начинаются с 0:

print(suggestions[0])
print(suggestions[1])
print(suggestions[2])
print(suggestions[3])

Списки знают свой размер: вызов len(suggestions) вернёт 4 — количество рекомендаций, которые мы добавили. Это можно использовать, чтобы вывести все рекомендации в столбик:

for i in range(len(suggestions)):
    print(suggestions[i])

Итог

Итак, мы сократили код, и из такого:

Получили такой:

Теперь, чтобы увеличить количество рекомендаций с 4 до 5, достаточно изменить number_of_suggestions (попробуйте!). В получившемся коде не дублировано ни одной строки, а количество замечаний заданное не жёстко.

Что дальше

Мы научились хранить однотипные данные, но не заостряли особого внимания на произведении одинаковых операций над ними. Наша статья про итерацию как раз об этом. Она также предполагает понимание того, как работают словари.

Альтернативные источники

Если мы не смогли объяснить материал, напишите нам или попробуйте альтернативные источники по теме: