首页 > 解决方案 > Lambda 函数中 if 语句的语法错误

问题描述

targetScore 是整数列表中的最大值。我将 lambda 函数与 map 一起使用。对于函数中的每个值,如果项目等于列表中的最大值,我希望 lambda 将其附加到列表“ListofIndices”。

当我尝试定义:

getter = lambda x: listofIndices.append(index(x)) if x == targetScore

我收到错误声明:

getter = lambda x: listofIndices.append(index(x)) if x == targetScore                                                                   
SyntaxError: invalid syntax

标签: pythonlambdapython-3.7

解决方案


听起来您既需要过滤器需要地图,这需要两个不同的功能:一个用于条件,一个用于转换。您可以使用列表推导来获得相同的效果:

listOfIndices = [i for i, x in enumerate(integers) if x == targetScore]

enumerate遍历 (index, element) 对,因此您不必使用该index方法。


推荐阅读