Дан список батчей batches = [[101, 102], [], [103]]. Что вернёт выражение [x for batch in batches for x in batch]?

A[[101, 102], [], [103]]
B[101, 102, [], 103]
C[101, 102, 103]
D[[101, 102], [103]]
Правильный ответ. Два for в списочном включении эквивалентны вложенным циклам и часто используются для «сплющивания» списка списков.

Разбор

Конструкция [x for batch in batches for x in batch] сначала перебирает каждый batch, затем элементы x внутри него. Пустой [] просто не добавляет элементов в результат, поэтому итог — плоский [101, 102, 103]. Порядок for-ов важен: внешний цикл должен идти первым, иначе переменная внутреннего цикла не успеет быть определена и интерпретатор выдаст NameError. Пустые подсписки никак не нарушают результат, они просто не вкладывают ничего на свой шаг.

Проверь себя · 1/3разбор после ответа
Есть список строк raw = ["10", "", "3"]. Нужно получить список целых чисел только из непустых строк. Какой вариант корректен и читаем?
Тренировать Python в Telegram

Ещё вопросы по теме «Генераторы списков и встроенные функции»