如何在一行中将多个值提供给lambda函数

时间:2018-02-20 23:08:34

标签: python lambda

对于一个“有趣”的项目,我想做一个fizzbuzz单行。我相信逻辑是好的,现在我只是坚持如何一次为它提供100个值。这就是我到目前为止所做的:

print(map(lambda x : return (lambda x : return 'fizzbuzz' if x%15 == 0 else return 'fizz') if x%3 == 0 else (return lambda x : (return 'fizzbuzz' if x%15 == 0 else return 'buzz') if x%5 == 0 else (return x)), range(1, 100)))

错误似乎在最后,我正在使用map函数。我如何给lambda函数赋予一系列值?

2 个答案:

答案 0 :(得分:2)

我对您的代码进行了一些编辑,以使其工作。不应在lambda函数中使用return关键字,也不应为每个条件嵌套lambda。最后,您需要将输出转换为某种可打印格式(我选择了一个列表):

print(list(map(lambda x: 'fizzbuzz' if x%15 == 0 else 'fizz' if x%3 == 0 else 'buzz' if x%5 == 0 else x, range(1, 100))))

答案 1 :(得分:2)

lambda函数不需要return语句。相反,将评估:之后的代码并返回结果值:

final_values = map(lambda x:'fizzbuzz' if x%5 == 0 and x%3 == 0 else 'buzz' if x%5 == 0 else 'fizz' if x%3 == 0 else x, range(1, 100))