numbers = (2, 3, 1, 4, 2, 3, 6)
e = 3 # element to remove
nums_removed = tuple(
filter(
lambda x, found=[False, True]: not (not found[0] and x == e and found.reverse() is None),
numbers
)
)
print(nums_removed)
Вывод:
(2, 1, 4, 2, 3, 6)
Однако я не могу понять, почему кто-то так сильно хотел бы написать код. Это все равно, что ехать из США в США через Индию.
Смысл в том, чтобы использовать функциональное программирование, когда оно производит более простой и красивый код, и использовать все остальное, что уже доступно, чтобы облегчить жизнь.
Я закончил тем, что написал lambda
функцию, которую я сам не совсем понимаю, но она работает. Я продолжал пробовать разные подходы, чтобы увидеть, что работает, потому что мне было скучно. Вы не можете иметь локальные переменные внутри лямбда-функций, поэтому я использовал изменяемый аргумент по умолчанию found
для сохранения состояния функции. Я отправил его как ответ, как только он заработал.
Если кто-то хочет добавить объяснение к моему ответу, смело редактируйте его.