如何在python中将复杂函数转换为lambda?

时间:2018-12-03 09:56:22

标签: python lambda

我正在考虑将更复杂的函数转换为lambda并将其放入地图而不是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))

或者lambda只应该处理短函数?大文件必须“分解”为单独的功能?

2 个答案:

答案 0 :(得分:2)

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)))

答案 1 :(得分:1)

首选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]