Drone X

Списки: телеметрия полёта

3 блок(ов) теории · 10 заданий · 145 баллов

Поток телеметрии — это много значений одного смысла подряд: высота по секундам, напряжение каждой банки, скорость на каждом круге. Для таких данных в Python есть список: значения в квадратных скобках через запятую — altitudes = [12, 18, 24, 27, 21, 9] — это шесть замеров высоты одного полёта. Элементы нумеруются с нуля: altitudes[0] — это 12, первый замер, а altitudes[5] — последний, 9. Индекс можно считать и с конца: altitudes[-1] — это 9, altitudes[-2] — 21; так «последний элемент» находится без знания длины. Длину считает функция len: len(altitudes) — это 6, поэтому легальные индексы — от 0 до 5, а altitudes[6] падает с ошибкой IndexError.

Срез берёт не один элемент, а отрезок: altitudes[1:4] — элементы с индексами 1, 2 и 3, то есть [18, 24, 27]; правая граница не входит, и её удобно проверять правилом «правая минус левая — сколько элементов взяли». Второе двоеточие задаёт шаг: altitudes[::2] — каждый второй элемент, [12, 24, 21]. Цикл for из модуля 3 умеет идти прямо по списку, а собранный результат накапливают в пустом списке, дописывая элементы методом append. Для итогов по списку есть готовые функции: sum — сумма, min и max — крайние значения, а среднее — это sum(altitudes) / len(altitudes). Вернуть из функции сразу несколько итогов можно кортежем — значениями в круглых скобках через запятую: (max(altitudes), min(altitudes)) — пара из наибольшего и наименьшего.

Отсортировать список можно двумя способами, и разница между ними — главная ловушка модуля. Функция sorted(vals) возвращает новый отсортированный список, не трогая исходный; параметр reverse=True даёт порядок по убыванию, поэтому sorted(speeds, reverse=True)[:3] — это «три наибольших значения по убыванию». Метод vals.sort() переставляет элементы в самом списке и возвращает None, так что запись vals = vals.sort() подменяет список значением None. Настоящую копию снимают срезом vals[:] или методом vals.copy() — простое присваивание copy = vals копии не создаёт, под двумя именами живёт один список. Фильтры и преобразования записывают списковым включением — компактной формой цикла: [r for r in readings if low <= r <= high] собирает список так же, как цикл с append внутри if. В решениях этого модуля достаточно явного цикла — включение держите в уме как его стенографию.

Задания

0/10 заданий · 0/145 баллов

1. Индексы телеметрии: с нуля и с конца

10 балл(ов)

Бортовой журнал записал высоту дрона по секундам в список altitudes = [12, 18, 24, 27, 21, 9] — подъём и снижение за шесть секунд. Выберите вариант, где верно названы altitudes[0], altitudes[-1] и срез altitudes[1:4].

1 / 10