有没有“如果”在Python的lambda执行方式(Is there a way to perfor

2019-08-20 01:57发布

Python 2.6,我想这样做:

f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception

这显然不是语法。 是否有可能执行iflambda如果是的话怎么办呢?

谢谢

Answer 1:

您正在寻找的语法:

lambda x: True if x % 2 == 0 else False

但你不能使用printraise在拉姆达。



Answer 2:

你为什么不只是定义一个函数?

def f(x):
    if x == 2:
        print(x)
    else:
        raise ValueError

实在是没有理由在这种情况下使用拉姆达。



Answer 3:

可能是最糟糕的Python行我至今写:

f = lambda x: sys.stdout.write(["2\n",][2*(x==2)-2])

如果x == 2打印,

如果X!= 2你养。



Answer 4:

您可以轻松地在拉姆达引发异常,如果这就是你真正想做的事情。

def Raise(exception):
    raise exception
x = lambda y: 1 if y < 2 else Raise(ValueError("invalid value"))

这是一个好主意吗? 我一般的直觉是离开的错误报告出来的lambda表达式; 让它有None值,并在调用者引发错误。 我不认为这本来是一件坏事,虽然 - 我认为“Y如果x其他z”的语法本身更糟糕的 - 只要确保你不是想的东西太多为lambda体。



Answer 5:

在Python lambda表达式是关于你被允许使用的相当严格。 特别是,你不能有任何关键字(除了像运营商andnotor等)在他们的身上。

那么,有没有办法,你可以使用lambda您的例子(因为你不能用raise ),但如果你愿意承认对...你可以使用:

f = lambda x: x == 2 and x or None


Answer 6:

注意,您可以使用几个其他...如果你拉姆达定义语句:

f = lambda x: 1 if x>0 else 0 if x ==0 else -1


Answer 7:

如果你仍然想打印您可以导入未来模块

from __future__ import print_function

f = lambda x: print(x) if x%2 == 0 else False


Answer 8:

正是你需要的是

def fun():
    raise Exception()
f = lambda x:print x if x==2 else fun()

现在调用函数你需要的方式

f(2)
f(3)


Answer 9:

您还可以使用逻辑运算符有东西像一个条件

func = lambda element: (expression and DoSomething) or DoSomethingIfExpressionIsFalse

你可以看到更多的逻辑运算符这里



Answer 10:

这段代码应该可以帮助你:

x = lambda age: 'Older' if age > 30 else 'Younger'

print(x(40))


Answer 11:

下面的示例代码为我工作。 不知道,如果它直接涉及到这个问题,但希望它有助于在其他一些情况下。

a = ''.join(map(lambda x: str(x*2) if x%2==0 else "", range(10)))


Answer 12:

试试吧:

is_even = lambda x: True if x % 2 == 0 else False
print(is_even(10))
print(is_even(11))

日期:

True
False


文章来源: Is there a way to perform “if” in python's lambda