Симулировать симулировать takewhile (), что возвратил список с функцией лямбда

Хорошие я нуждаюсь в том, чтобы сделать как вид takewhile (), но с функцией лямбда Вещь - что и достигнутый это:

tomar_mientras = lambda l, condicion: [] if l == [] else [l[0]] + tomar_mientras(l[1:],condicion) if l[0] == condicion else []

Но просвет это не функционирует, очевидно есть вещи, которые убегают от меня, и сколько бы я не пробую изменять вещи не функционирует

я нуждаюсь например в том, что, если я происхожу с Вами

tomar_mientras([1,2,3,4,5], lambda x: x < 5) 

возвратите мне [1,2,3,4]

1
задан 31.10.2019, 23:49
1 ответ

То, что ты ищешь, так это следующее:

tomar_mientras = lambda term, l: [] if list(l) == [] or not term(l[0]) else \
                                 [l[0]] + tomar_mientras(term, l[1:])

takewhile estГЎ в коротком замыкании, ты это забыл. Ты можешь сравнивать функционирование обоих, они равны.

0
ответ дан 01.12.2019, 14:43

Теги

Похожие вопросы