【发布时间】:2014-01-20 20:07:28
【问题描述】:
我正在尝试使我的代码更加动态和更小,因此我尝试使用一些数组,但我需要将一个函数放入数组中。我听说过 lambda,但问题是它不需要返回任何值,但它确实需要设置一个值。这是我尝试过但没有奏效的方法:
variableArray = [lambda: value = '2' if variable == 1 else None,lambda: value = '3' if variable == 1 else None]
for k in range(len(variableArray)):
print(variableArray[k](2))
但我无法使用此方法设置值,也无法找到任何其他方法。那么还有其他方法可以与我正在尝试做的事情一起使用吗?
【问题讨论】:
-
这看起来真的很难阅读。有可能让它工作 - 但你应该这样做吗?我反对。
-
如果函数足够独特,您别无选择,只能编写几个函数声明。如果它们有一个模式,则可以自动化函数构造,但如果这是真的,那么一个函数可能就足够了。如果您打算使用这两个 lambda 函数,我建议您不要这样做;用不同的代码表达相同的想法会容易得多。你到底想做什么?
-
另请注意,“自动函数构造”有其陷阱。例如
[(lambda: x+1) for x in range(5)]返回一个函数列表,但是它们都表现得好像x是4。
标签: python arrays function lambda