Код выведет 1, затем [2, 3, 4], затем 5. Звёздочка при распаковке собирает промежуточные элементы в отдельный список b.
Какой вывод можно сделать из следующего кода?
Код выведет 1, затем [2, 3, 4], затем 5. Звёздочка при распаковке собирает промежуточные элементы в отдельный список b.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какой вывод можно сделать из следующего кода?
numbers = [1, 2, 3, 4, 5]
a, *b, c = numbers
print(a)
print(b)
print(c)
Ответ
Код выведет 1, затем [2, 3, 4], затем 5. Звёздочка при распаковке собирает промежуточные элементы в отдельный список b.
Обычные цели слева и справа забирают обязательные элементы, а звёздочная цель — всё оставшееся:
1
[2, 3, 4]
5
Исходный список numbers не изменяется. Для двух элементов b оказался бы пустым списком; для одного возник бы ValueError, потому что нужны значения и для a, и для c. Звёздочная часть всегда создаёт список, даже если распаковывался кортеж или другой итерируемый объект. Это расширенная распаковка, а не срез с общей памятью.