📖 Содержание
Часть 1: Мир программирования вокруг нас
Часть 2: Алфавит и словарь программирования
Часть 3: Строим первые программы
Часть 4: Наш удивительный мозг
Часть 5: Творческие проекты
Часть 6: Программирование в реальном мире
Глава 10 из 27
3: Строим первые программы
Глава 10: "Массивы и списки: коллекции сокровищ"
На выходных Профессор Бит предложил Алисе помочь разобрать свою знаменитую коллекцию марок. Они разложили на огромном столе несколько альбомов с марками разных стран, эпох и тематик.
— Знаешь, Алиса, — начал Профессор, бережно перелистывая страницы альбома, — коллекции в реальной жизни очень похожи на то, что в программировании называется массивами и списками.
— А что такое массивы и списки? — спросила Алиса, рассматривая красочную марку с изображением космического корабля.
— Представь, что у тебя есть много связанных между собой предметов, которые ты хочешь хранить вместе, — объяснил Профессор. — Например, все эти марки в альбоме. В программировании мы можем создать список, который будет содержать много элементов, и работать с ними как с единым целым.
Байт подкатился поближе и вывел на свой экран пример:
python
марки = ["космос", "животные", "спорт", "искусство", "транспорт"]
— Это список из пяти строчек, — пояснил Профессор. — Каждая строка — это отдельный элемент списка, а вместе они образуют целую коллекцию.

— Так просто? — удивилась Алиса.
— Да, создать список очень просто, — кивнул Профессор. — А вот работать с ним можно по-разному. Например, мы можем узнать, сколько всего элементов в нашем списке с помощью команды len (от английского length — длина):
python
количество_марок = len(марки) # Результат: 5
— Или мы можем обратиться к конкретному элементу по его позиции, которая называется индексом:
python
первая_марка = марки[0] # Результат: "космос"
вторая_марка = марки[1] # Результат: "животные"
— Подожди, — нахмурилась Алиса, — почему первый элемент имеет индекс 0, а не 1?
— Отличный вопрос! — улыбнулся Профессор. — В большинстве языков программирования счёт начинается с нуля. Это связано с тем, как компьютер исторически хранит данные в своей памяти. Так что первый элемент всегда имеет индекс 0, второй — 1, и так далее.
Алиса задумалась, глядя на аккуратно разложенные марки:
— Профессор, а это похоже на то, как мама раскладывает вещи по ящикам и коробкам, подписывая, где что лежит?
— Идеальное сравнение! — восхитился Профессор. — Организация данных в программировании — это то же самое, что наведение порядка в комнате.
Он на секунду отвлёкся от марок и с улыбкой продекламировал:
Массив — это длинный сверкающий поезд,
Где выстроен в линию каждый вагон.
С нуля начинает отсчёт эта повесть,
И строго по правилам движется он.
Ты можешь достать из шестого посылку,
А можешь вагон прицепить в самый хвост.
Массивы и списки — не просто копилка,
А к собранным данным проложенный мост!

— Видишь, — продолжил он, — когда мы организуем данные в списки, мы раскладываем информацию по "коробкам", чтобы потом программе было легко найти то, что нужно.
Логик, которая помогала раскладывать марки по категориям, добавила:
— Списки в программировании очень гибкие. Мы можем добавлять новые элементы, удалять существующие, изменять их, сортировать и делать многое другое.
Профессор тут же показал новые примеры:
python
Добавление нового элемента в конец списка
марки.append("архитектура")
print(марки)
Результат: ["космос", "животные", "спорт", "искусство", "транспорт", "архитектура"]
Удаление элемента
марки.remove("спорт")
print(марки)
Результат: ["космос", "животные", "искусство", "транспорт", "архитектура"]
Изменение элемента
марки[1] = "дикая природа"
print(марки)
Результат: ["космос", "дикая природа", "искусство", "транспорт", "архитектура"]
Сортировка списка по алфавиту
марки.sort()
print(марки)
Результат: ["архитектура", "дикая природа", "искусство", "космос", "транспорт"]
— А что, если я хочу проверить, есть ли определённая марка в моей огромной коллекции, не перебирая её всю? — спросила Алиса.
— Для этого можно использовать волшебное слово in (в), — объяснил Профессор:
python
if "космос" in марки:
print("Ура! У тебя есть марки на тему космоса!")
else:
print("Увы, марок на тему космоса нет.")
Байт мигнул экраном и показал ещё один пример:
python
Перебор всех элементов списка с помощью цикла
for тема in марки:
print("В альбоме есть марка на тему:", тема)
— С помощью цикла for мы можем выполнить какое-то действие для каждого элемента списка по очереди, — пояснил Профессор. — Это очень удобно, когда нужно обработать сразу всю коллекцию.
— А можно создавать списки с разными типами данных внутри? — поинтересовалась Алиса.
— Конечно! — кивнул Профессор. — В один список можно поместить числа, текст, булевы значения (True/False) и даже другие списки!
python
разное = [42, "привет", True, [1, 2, 3]]
— Вложенные списки (списки внутри списков) особенно полезны для создания таблиц, сеток или игровых полей, — добавил Профессор. — Например, вот так можно представить поле для игры в крестики-нолики:
python
поле = [
[" ", " ", " "],
[" ", "X", " "],
[" ", " ", "O"]
]
— В этом примере у нас есть один большой список, внутри которого лежат три маленьких. Каждый маленький список — это один ряд игрового поля, — объяснил он. — Чтобы обратиться к конкретной клетке, нужно указать сразу два индекса: номер ряда и номер колонки.
python
центральная_клетка = поле[1][1] # Результат: "X"
— А есть ещё какие-то виды коллекций кроме списков? — спросила Алиса, пытаясь уложить всё в голове.
— Да, в языке Python есть несколько удобных типов коллекций для разных задач:
1. Списки (list) — упорядоченные коллекции, которые мы только что обсудили.
2. Кортежи (tuple) — это братья списков, но их нельзя изменять после создания. Они как запаянные коробки.
3. Словари (dict) — коллекции пар "ключ-значение", как настоящие бумажные словари.
4. Множества (set) — коллекции уникальных элементов, где нет повторений.
— Давай рассмотрим словари подробнее, — предложил Профессор. — Они незаменимы, когда нужно накрепко связать одни данные с другими.
python
Словарь, связывающий страны (ключ) с их столицами (значение)
столицы = {
"Россия": "Москва",
"Франция": "Париж",
"Япония": "Токио"
}Получение значения по ключу
столица_франции = столицы["Франция"] # Результат: "Париж"Добавление новой пары
столицы["Италия"] = "Рим"Перебор всех пар в словаре
for страна, столица in столицы.items():
print("Столица государства", страна, "— это", столица)
— Заметь, в словаре мы обращаемся к элементам не по скучному индексу-цифре, а по понятному слову-ключу, — объяснил Профессор. — Это делает код гораздо читаемее.
— А множества? — спросила Алиса. — Для чего они нужны?
— Множества полезны, когда нам важно только наличие или отсутствие элемента, а порядок вообще не имеет значения, — ответила Логик. — Кроме того, множества автоматически уничтожают клонов! В них не бывает дубликатов.
python
Создание множества
цвета = {"красный", "синий", "зелёный", "синий"}
print(цвета)
Результат: {"красный", "синий", "зелёный"} — лишний "синий" был удалён!
Проверка наличия элемента
if "жёлтый" in цвета:
print("Жёлтый цвет есть во множестве")
else:
print("Жёлтого цвета нет во множестве")Математические операции с множествами
цвета2 = {"жёлтый", "синий", "оранжевый"}общие_цвета = цвета & цвета2
Пересечение (что есть и там, и там): {"синий"}
все_цвета = цвета | цвета2
Объединение (собрать всё вместе без дубликатов):
{"красный", "синий", "зелёный", "жёлтый", "оранжевый"}
— В программировании коллекции используются ежесекундно, — подытожил Профессор, аккуратно закрывая альбом с марками. — Они позволяют работать с огромными группами данных, что критически важно для любой программы.
— Это как в реальной жизни, — заметила Алиса. — Мы ведь постоянно имеем дело с коллекциями: набор цветных карандашей, книги на полке, продукты в холодильнике...
— Именно! — улыбнулся Профессор. — Программирование не выдумывает ничего нового. Оно просто отражает структуры из нашего реального мира, делая их более организованными и послушными!