На отдельных строках напечатаются числа 0–4, а b получит список [None, None, None, None, None], поскольку print возвращает None.
List comprehension, вызывающий побочный эффект
На отдельных строках напечатаются числа 0–4, а b получит список [None, None, None, None, None], поскольку print возвращает None.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что будет напечатано при запуске следующего кода:
b = [print(i) for i in range(5)]
Ответ
На отдельных строках напечатаются числа 0–4, а b получит список [None, None, None, None, None], поскольку print возвращает None.
Comprehension вычисляет выражение print(i) для каждого элемента range(5). Побочный эффект — вывод числа, а возвращаемое значение каждого вызова помещается в создаваемый список.
0
1
2
3
4
Сам b в показанном коде не печатается. Если нужен только вывод, понятнее обычный цикл:
for i in range(5):
print(i)
Он не создаёт ненужный список результатов. Если же нужен список чисел, используйте b = list(range(5)), не смешивая формирование данных с печатью.