Преобразовать отрицательные элементы результата функции без изменения её кода

Оберните результат вызова в list comprehension с abs: [abs(value) for value in foo(length)]. Исходная функция не меняется; порядок и количество элементов сохраняются.

Короткий ответ

Что ответить на собеседовании

Оберните результат вызова в list comprehension с abs: [abs(value) for value in foo(length)]. Исходная функция не меняется; порядок и количество элементов сохраняются.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо изменить способ использования функции foo, так чтобы все числа, которые она возвращает со знаком «‑», стали положительными. При этом саму функцию foo менять нельзя.


def foo(length: int = 10) -> list[int]:
    is_minus = length < 0
    return [i if not is_minus else -i for i in range(abs(length)) if i % 2 == 0]

Ваше решение должно обернуть вызов foo и скорректировать полученный список, не трогая реализацию функции.

Ответ

Оберните результат вызова в list comprehension с abs: [abs(value) for value in foo(length)]. Исходная функция не меняется; порядок и количество элементов сохраняются.

Вариант отдельной обёртки:

def positive_foo(length=10):
    return [abs(value) for value in foo(length)]

positive_foo(-6) вернёт [0, 2, 4], а positive_foo(6) — тот же список. Ноль остаётся нулём: сделать его строго положительным означало бы уже изменить не только знак отрицательных значений. Возвращается новый список; сама foo продолжает работать по прежнему контракту.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее