Как мне преобразовать сложную функцию в лямбду в Python? - PullRequest
0 голосов
/ 03 декабря 2018

Я думаю о том, как преобразовать более сложную функцию в лямбду и поместить ее в карту вместо f.Функция такова:

#this function should be in lambda
def f(s):
    if (type(s) == int):
        return s*2
    else:
        return s.replace('r', '*')

lst = [4,5,6,'rer', 'tr',50,60]
lst = list(map( f, lst))
#result of lst is [8, 10, 12, '*e*', 't*', 100, 120]
#lst = list(map ( lambda x.... , lst))

Или лямбда должна иметь дело только с короткими функциями?Большие должны быть «разложены» на отдельные функции?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Предпочитают isinstance вместо type

lst = [4,5,6,'rer', 'tr',50,60]
lst = list(map(lambda x: x*2 if isinstance(x, int) else x.replace('r', '*'), lst))

lst
[8, 10, 12, '*e*', 't*', 100, 120]
0 голосов
/ 03 декабря 2018

Используйте if else оператор в lambda:

print(list(map(lambda x: x*2 if type(x)==int else x.replace('r','*'),lst)))

Вывод:

[8, 10, 12, '*e*', 't*', 100, 120]

Еще лучше, используйте isinstance:

print(list(map(lambda x: x*2 if isinstance(x,int) else x.replace('r','*'),lst)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...