我试图通过使用Replacements for switch statement in Python中的以下示例来实现一个函数:
def f(x):
return {
'+': (lambda x: x[1] + x[2]),
'-': (lambda x: x[1] - x[2])
}[x[0]]
print(f(["+",2,3])) #Output should be 5.
f(["-", 4, 1]) # Output should be 3.
我显然做错了什么。也许有人对此有更好的建议?你知道吗
编辑:
如果我想将lambda的输出保存在一个列表中,然后返回它呢?你知道吗
例如:
def f(x, output):
return {
'+': (lambda x: x[1] + x[2]),
'-': (lambda x: x[1] - x[2])
}[x[0]]
output = [10, 20, 30, 40]
# to 2nd element in output list we add the last element in the list
print(f(["+",2,3], output)) #Output should be output = [10, 20, 33, 40]
output = [10, 20, 30, 40]
f(["-", 1, 100]) # Output should be [10, 120, 30, 40].
您的字典将字符串映射到函数,而不是该函数的结果,这就是
lambda
所在的位置。你可以用两种方法来解决这个问题:或者直接计算结果,或者在最后调用函数。你知道吗但是,您也可以声明函数,并向其传递参数。这也将使它更加灵活,因为例如一个假设的
f(["sin", 1.2])
只有一个参数。例如,我们可以构建一个字典,如:然后我们的
f
看起来像:所以我们用列表中的其余元素调用函数。你知道吗
请记住将映射函数实际应用于变量:
这是一个更灵活的版本:
更好的办法是使用调度器只存储操作。你知道吗
详见@WillemVanOnsem's answer。你知道吗
相关问题 更多 >
编程相关推荐