我正在考虑将更复杂的函数转换为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只应该处理短函数?大文件必须“分解”为单独的功能?
答案 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]